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..
**SNI (Server Name Indication)**는 클라이언트가 TLS 핸드셰이크 과정에서 서버에 접속할 때 요청하는 서버의 도메인 이름을 명시하는 TLS 확장 필드입니다.SNI는 주로 **하나의 IP 주소에 여러 도메인 이름(웹사이트)**을 호스팅하는 서버에서 사용됩니다. 이를 통해 클라이언트가 접속하려는 도메인 이름을 서버에 전달할 수 있어, 서버는 해당 요청에 맞는 올바른 SSL/TLS 인증서를 제공할 수 있습니다.SNI의 동작 방식:클라이언트가 서버에 연결을 요청할 때, TLS 핸드셰이크를 시작합니다.클라이언트는 Client Hello 메시지를 전송하며, 이 메시지에 SNI 확장 필드를 포함시켜 접속하고자 하는 도메인 이름(예: www.example.com)을 서버에 알려줍니다.서버는 해..
TLS 1.2 vs TLS 1.3 1. 핸드셰이크 과정 TLS 1.2: 핸드셰이크 과정에서 최대 2라운드 트립(Round Trip Time, RTT)이 필요합니다. TLS 1.3: 핸드셰이크가 1라운드 트립(RTT)으로 단축되어, 세션 설정이 더 빠르게 이루어집니다. 2. 암호화 알고리즘 TLS 1.2: 다양한 암호화 알고리즘을 지원하며, 일부 안전하지 않은 알고리즘도 포함되어 있습니다. TLS 1.3: 약한 암호화 알고리즘을 모두 제거하고, AES-GCM, ChaCha20-Poly1305와 같은 강력한 알고리즘만 지원합니다. 3. 암호 스위트 단순화 TLS 1.2: 복잡한 암호 스위트 구성..
C++ Thread Local Storage (TLS) and GetLastError 1. TLS 설명 C++에서 TLS (Thread Local Storage)는 각 스레드가 고유한 변수를 저장하고 접근할 수 있게 해주는 메커니즘입니다. TLS는 다중 스레드 환경에서 각 스레드가 서로 독립적으로 데이터를 저장할 수 있도록 도와줍니다. thread_local 키워드를 사용하여 각 스레드마다 별도의 변수를 선언할 수 있습니다. 스레드 간 경합을 피할 수 있으므로 동기화 없이 안전한 데이터 처리가 가능합니다. 2. TLS 예제 코드 #include #include thread_local int counter = 0;void..
- Total
- Today
- Yesterday
- Thread
- 현포다이브
- 서귀포
- C# 고급 기술
- Linux
- DLL
- PowerShell
- 블루버블다이빙팀
- Windows
- C#
- C#.NET
- 리눅스
- 패턴
- C
- 서귀포블루버블
- Build
- 외돌개
- 암호화
- CMake
- ip
- 스쿠버 다이빙
- 성산블루버블
- 스쿠버다이빙
- 제주도
- 윈도우
- C++
- OpenSource
- 블루버블
- 울릉도
- 블루버블다이브팀
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |