본문 바로가기

Programming/Win_API19

API Hooking 정리 User Mode Hooking - IAT Hooking - Trampoline Code Hooking - EAT Hooking ================ 정리 =============== 1. API함수의 실행흐름에서 제어권을 가져오는 방법.- 0xCC, jmp code, IAT, EAT Patch 2. 제어권을 가져온 후 원하는 동작을하기 위한 방법.- DLL Injection, Debugger Attach Kernel Mode Hooking - SSDT Hooking (System Service Descriptor Table)Native API 주소를 보관하고 있는 테이블 - IDT Hooking (Interrupt Descriptor Table)인터럽트 핸들러 주소를 보관하고 있는 테이블 - .. 2013. 11. 10.
쓰레드 - 타이머기반 동기화 정해진 시간이 되면 Signaled 상태가 되는 특성을 가짐. [*] #define _WIN32_WINNT 0x0400 (NT 4.0부터 제공되는 함수이기 때문에 선언해야함.) CreateWaitableTimer( // 타이머 생성 LPSECURITY_ATTRIBUTES lpTimerAttributes, BOOL bManualReset, // TRUE : Manual-Reset Mode, FALSE : Auto-Reset Mode LPCTSTR lpTimerName ); SetWaitableTimer( // 타이머 설정 HANDLE hTimer, const LARGE_INTEGER* pDueTime, // 타이머 시간 LONG lPeriod, // 주기(반복하지 않을 경우 0) PTIMERAPCROUTI.. 2013. 1. 3.
쓰레드 - 이벤트기반 동기화 이벤트기반 동기화 HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset, // TRUE : Manual-Reset Mode, FALSE : Auto-Reset Mode BOOL bInitialState, // TRUE : Signaled 상태로 생성, FALSE : Non-Signaled 상태로 생성 LPCTSTR lpName ); 쓰레드나 프로세스의 커널 오브젝트는 초기(Non-Signaled 상태)에서 종료시에 Signaled 상태로 변경되지만 이벤트 오브젝트의 경우에는 수동으로 함수 호출(SetEvent)을 통해서 해줘야한다. 보통 WaitForSingleObject()함수는 Signaled 상태가 된 경우에 반.. 2013. 1. 3.
IPC - 메일 슬롯 프로세스는 각각 독립적으로 Stack, Heap, Data 등의 영역을 가지는데 해당 영역에 다른 프로세스에서 직접적으로 접근할 수 없다. 이런 상황에서 프로세스간의 통신을 하는 방법이 IPC(Inter Process Communication)이다. 메일 슬롯 - 단방향 통신 -> 메일 슬롯 2개를 만들어서 양방향 통신. [메일 슬롯 이름 형식] 2012. 12. 26.