security/리버싱핵심원리

HookMain.exe / KeyHook.dll 디버깅

민사민서 2023. 3. 17. 11:30

[HookMain.exe] 

1) Main 함수 찾기

Entry Point

- Visual C++ stub 코드 존재 (CALL HookMain.01161779 Step over / 들어가서 Ctrl+F9으로 탈출)

- HookMain.011610B0 으로 가서 Ctrl+F8 (tracing) 시작

여기서 멈춰있음. 엔터해서 들어가보면 HookMain.0116100이 메인함수임을 알 수 있음

- Main 함수에 bp 걸고 분석 시작

 

- 또 다른 쉬운 방법은 Search for All referenced text strings (메인함수에서 사용되는 문자열 알기 때문)

2) Main 함수 분석

- CALL EBX 명령어를 따라 들어가면 (Ctrl+F7, Step in)

HookMain.exe 프로세스에 로딩된 Keyhook.dll의 HookStart() 코드

- 73DD1020으로 Jump(Ctrl+G)하면 KeyboardProc() 코드 존재

 

[KeyHook.dll]

1. 실행중인 notepad.exe attach 하거나 Ollydbg에서 open 후 F9

2. Options - Debugging - Break on new modules(DLL) check

3. HookMain.exe 실행 후 notepad 에 keyboard input

4. Executable modules 창에서 KeyHook.dll 로딩된 위치 파악 가능

- EP에서 쭉 타고들어가다보면 DllMain 함수가 보이는데, 그 바로 아래에 KeyboardProc() 함수가 보인다