Tag Archives: injection

유저모드 후킹 – 인젝션 SetWindowsHookEx

SetWindowsHookEx 메시지 후킹은 앞서 말했듯이 운영체제가 사전에 정해놓은 특정 이벤트(키 입력, 윈도우 크기 변경 등과 같은 작업)를 프로그램이 운영체제에 요청하고 처리 결과를 프로그램에 통보하게 되는데, 이 지점을 가로채기, 즉 후킹하여 메시지를 엿보거나 조작할 수 있다. 이런 메시지 훅은 운영체제에서 제공하는 기본 기능(여기서 소개할 이외 후킹들도 운영체제가 지원하는 기능들을 이용한 것이다)으로 하나의 메시지에 여러 개의 훅을

Read More

유저 모드 후킹 – 코드패치, 인젝션 개념

디버깅: 우리가 진행하는 디버깅 과정도 프로세스 입장에서는 후킹이라 할 수 있다. 이는 커널 디버깅이냐 유저 모드 디버깅이냐에 따라 후킹 범위가 달라지며, 유저 모드 후킹은 디버거를 통해 프로세스를 Attach하는 행위도 후킹이라 할 수 있다. 이때 사용되는 API인 DebugActiveProcess 로써 구조체는 다음과 같다.   BOOL WINAPI DebugActiveProcess(     DWORD dwProcessId );   MSDN의 http://msdn.microsoft.com/en-us/library/ms679295(VS.85).aspx 에서 위 API에

Read More

Hooking 후킹 – CreateRemoteThread

CreateRemoteThread 후킹을 위해 제일 많이 애용하는 방법이 바로 CreateRemoteThread일 것이다. CreateRemoteThread는 방법도 쉬울 뿐더러 Dll을 인젝션 오류 없이 진행할 수 있다. 그래서 실제 악성코드나 해킹도구에서도 많이 사용하는 방법이다. 그럼 이 CreateRemoteThread를 이용하는 로더 프로그램을 작성해 보자. injectiondll.cpp #include <stdio.h>#include <windows.h>#include <tlhelp32.h>BOOL InjectDll(DWORD PID, char* DllName){ HANDLE h = OpenProcess(PROCESS_CREATE_THREAD | PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION | PROCESS_VM_WRITE

Read More