1 Intro
2 Prior Knowledge
2.1 What is an API?
2.2 What is an API Hooking?
3 User Mode Hooking
3.1 IAT Hooking
3.2 Message Hooking
4 Kernel Mode Hooking
4.1 System Call
4.2 INT 0x2E Hooking
4.3 SYSENTER Hooking
4.4 SSDT Hooking
5 Conclusion
6 Reference
그림
그림 1. User Mode & Kernel Mode
그림 2. 정상호출과 후킹된 호출
그림 3. PE View로 본 IAT
그림 4. Sleep API
그림 5. 메모리에서 Sleep API
그림 6. Sleep API in IAT
그림 7. 코드 패치
그림 8. 호출할 함수 주소 변경
그림 9. 함수 호출 - Debugger
그림 10. Sleep이 호출하는 주소 변경
그림 11. Code Cave를 사용한 후킹
그림 12. (C) 단계 원래 명령어와 조작된 명령어
그림 13. 조작 코드
그림 14. Ntdll.dll의 API
그림 15. 메시지 전달 방식
그림 16. SetWindowsHookEx API
그림 17. DLL Injection
그림 18. System Call 과정
그림 19. INT 0x2E와 SYSENTER
그림 20. IDT 구조
그림 21. INT 0x2E의 ISR(KiSystemService)
그림 22. IDT 주소와 각 엔트리 구조
그림 23. IDT 0x2E 번째 Entry
그림 24. IDT Entry 0x2E 후킹
그림 25. Read MSR 0x176
그림 26. Write MSR 0x176
그림 27. 정상적인 SYSENTER 진입
그림 28. 후킹 된 SYSENTER 진입
그림 29. 전체적인 시스템 호출 과정
그림 30. SSDT Hooking 과정
그림 31. KeServiceDescriptorTable 구조
그림 32. SSDT를 통한 Native API 접근
그림 33. SSDT Hooking
'Reversing > Theory' 카테고리의 다른 글
DLL이란? (4) | 2016.05.29 |
---|---|
PE구조의 이해 (0) | 2016.05.04 |
윈도우 후킹 원리 (3) - Kernel [SSDT] (0) | 2016.04.23 |
윈도우 후킹 원리 (2) - Kernel [SYSTEM CALL] (0) | 2016.04.23 |
윈도우 후킹 원리 (1) - User Mode (3) | 2016.04.23 |