일반적인 Windows 메시지 흐름 

1. 키보드 입력 이벤트가 발생하면, WM_KEYDOWN 메시지가 [OS message queue]에 추가된다.


2. OS에서 어느 응용 프로그램에서 이벤트가 발생했는지 파악해서 메시지를 꺼내어 해당 응용 프로그램의 [application message queue]에 추가한다.


3. 응용 프로그램은 자신의 [application message queue]를 모니터링 하고있다가 WM_KEYDOWN 메시지가 추가된 걸 확인하고 해당 event handler를 호출한다.


2번의 과정에서 메시지 후킹이 일어난다.

- OS와 application 사이에 훅을 설치하고, 훅 함수내에서 메시지를 조작할 수 있다.


소스코드를 보기전에 간단한 원리는 아래와 같다.

- SetWindowsHookEx()를 이용해 훅을 설치하면, 어떤 프로세스에서 해당 메시지가 발생하였을 때, 운영체제가 DLL 파일을 해당 프로세스에 강제로 인젝션하고, Dll 파일에 등록된 hook procedure를 호출한다.



KeyHook.dll(훅 프로시저를 포함한 실제 후킹을 진행하는 dll파일 코드)



HookMain.exe(훅을 설치하는 프로그램 코드)


함수 설명은 -> https://turtleneck.tistory.com/17

+ Recent posts