동적 링크에 대한 문제점1. DLL 지옥 (DLL Hell)DLL Hell은 여러 응용 프로그램이 동일한 DLL을 공유할 때 발생하는 문제입니다. 주로 다음과 같은 경우에 발생합니다:버전 충돌: 응용 프로그램이 특정 버전의 DLL을 요구하지만, 다른 응용 프로그램에서 DLL을 업데이트하거나 덮어씌우면 기존 프로그램이 비정상적으로 동작하거나 충돌할 수 있습니다.의존성 관리 문제: 응용 프로그램이 실행되기 위해 필요한 모든 DLL을 정확히 찾지 못하거나 누락된 경우, 프로그램이 정상적으로 실행되지 않을 수 있습니다.2. 보안 문제DLL 하이재킹 (DLL Hijacking): 시스템이 DLL을 로드할 때, 의도된 DLL이 아닌 악성 DLL이 먼저 로드될 수 있습니다. 공격자는 악성 DLL을 시스템 경로에 배치..
DLL 명시적 연결 vs 묵시적 연결1. 묵시적 연결 (Implicit Linking)묵시적 연결은 프로그램이 실행될 때, 자동으로 DLL이 로드되는 방식입니다. 즉, 프로그램 시작 시 필요한 모든 DLL이 자동으로 메모리에 로드됩니다. 이를 위해서는 컴파일 시점에 DLL의 함수 시그니처가 필요하며, .lib 파일을 링크해야 합니다.묵시적 연결 코드 예시// main.cpp#include #include "MyDLL.h" // DLL에서 제공하는 헤더 파일int main() { // 묵시적 연결로 DLL의 함수를 호출 int count = GetCount(); std::cout 2. 명시적 연결 (Explicit Linking)명시적 연결은 프로그램이 실행된 후에, 필요할 때 DLL을 동..
1. DLL이란?DLL (Dynamic Link Library)의 정의DLL(동적 링크 라이브러리)은 프로그램이 실행되는 동안 동적으로 로드되어 사용할 수 있는 코드, 데이터, 또는 리소스 집합을 담고 있는 파일입니다. 여러 프로그램에서 공통으로 사용하는 기능을 제공할 수 있도록 설계되었으며, 특정 응용 프로그램이나 프로세스에서 필요할 때만 로드되어 메모리 효율을 높일 수 있습니다. 일반적으로 .dll 확장자를 가지며, Windows 운영 체제에서 주로 사용됩니다.DLL의 주요 특징코드의 재사용성: DLL을 사용하면 여러 프로그램이 동일한 기능을 공유하고, 중복된 코드를 여러 번 작성할 필요가 없습니다. 예를 들어, 동일한 기능을 제공하는 코드가 여러 응용 프로그램에 필요하다면, 해당 코드를 각각의 프로..
Detours를 이용한 Present 함수 후킹 이 문서에서는 Microsoft Detours 라이브러리를 사용하여 Direct3D 11의 IDXGISwapChain::Present 함수를 후킹하는 방법을 설명합니다. Detours는 함수 호출을 가로채고 수정할 수 있는 강력한 라이브러리입니다. Detours 개념 Detours는 원래의 함수 호출을 가로채고, 후킹된 함수를 먼저 호출하게 만듭니다. 후킹된 함수는 필요에 따라 원래 함수 호출을 수정하거나, 전후 작업을 수행한 후 원래 함수로 돌아갈 수 있습니다. 이 예제에서는 Present 함수가 호출될 때마다 이를 가로채 화면 캡처와 같은 작업을 할 수 있습니다. ..
COM을 이용한 화면 캡처 이 문서에서는 Windows의 Direct3D 11과 DXGI(DirectX Graphics Infrastructure)를 사용하여 화면을 캡처하는 방법을 설명합니다. DXGI는 COM 기반의 API로, 화면 출력을 캡처하는 데 사용할 수 있습니다. 특히 IDXGIOutputDuplication 인터페이스를 사용하여 현재 디스플레이의 화면을 캡처할 수 있습니다. DXGI와 Direct3D 11 개요 Direct3D 11은 그래픽 처리를 위한 DirectX의 한 부분이며, COM 인터페이스로 제공됩니다. DXGI는 DirectX와 GPU 간의 통신을 관리하는 기능을 제공하며, 이를 통해 ..
COM 인터페이스 vtable 후킹COM(컴포넌트 객체 모델) 인터페이스 후킹은 특정 COM 객체의 메서드 호출을 가로채고 이를 수정하거나 모니터링하는 기법입니다. 이 문서에서는 vtable 후킹을 사용하여 COM 인터페이스의 메서드를 후킹하는 방법을 설명합니다.vtable 후킹 개념COM 인터페이스는 C++의 가상 함수 테이블(vtable)을 통해 메서드 호출을 관리합니다. vtable 후킹은 이 가상 함수 테이블을 수정하여 원래 메서드 대신 사용자가 정의한 함수로 대체하는 방식입니다.COM vtable 후킹 코드 예제다음은 C++로 COM 인터페이스의 QueryInterface 메서드를 후킹하는 예제입니다.// C++ 코드 예제#include #include #include typedef HRESUL..
- Total
- Today
- Yesterday
- PowerShell
- 울릉도
- C# 고급 기술
- script
- 서귀포블루버블
- Build
- 블루버블다이브팀
- C++
- C#
- 블루버블
- DLL
- 패턴
- effective
- 성산블루버블
- Effective c++
- Windows
- 블루버블다이빙팀
- 서귀포
- 스쿠버 다이빙
- CMake
- 스쿠버다이빙
- 암호화
- Linux
- 외돌개
- OpenSource
- 제주도
- C#.NET
- 네트워크 정보
- 현포다이브
- C
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |