타겟 프로그램의 소스코드와 바이너리가 주어집니다.
실행 중인 타겟 프로세스의 API를 후킹하는 것이 목적이며, 타겟 프로세스의 메모리를 변조하기 위해 5주차에 학습한 방법을 사용합니다.
- [필수 1] 디버거/디스어셈블러를 사용하여 타겟 프로그램을 분석합니다. (x64dbg 추천)
- [필수 2] 실행 중인 타겟 프로세스의 메모리를 변조하는 프로그램을 작성하여 숨겨진 메시지 박스를 표시합니다. (콘솔 프로그램도 무관. 과제 5 참고)
- [선택 1] MessageBoxW 함수를 후킹하여 해당 함수가 호출될 때마다 로그를 출력합니다. (Link 1, 2)
- [선택 2] MessageBoxW 함수를 후킹하여 함수 호출에 사용된 인자를 변경합니다. (Link 3)
- [선택 3] 클래스의 멤버 함수를 후킹합니다. (Link 4, 5)
Link 1 - 5바이트 인라인 후킹, 7바이트 핫패칭: m.blog.naver.com/ryong0906/220615617530
Link 2 - WinAPI에 대한 7바이트 핫패칭 개념 설명:
devblogs.microsoft.com/oldnewthing/20110921-00/?p=9583
Link 3 - 훅 함수 정의 시 주의사항:
stackoverflow.com/questions/54852191/hooking-windows-api-function-crashes-application
Link 4 - 멤버 함수 후킹 (__fastcall 사용):
guidedhacking.com/threads/thiscall-member-function-hooking.4036/
Link 5 - 멤버 함수 후킹 (__fastcall 미사용):
stackoverflow.com/questions/21636482/hooking-thiscall-without-using-fastcall
참고 : disasm.pro/
[필수1] 디버거/디스어셈블러를 사용하여 타겟 프로그램을 분석합니다. (x64dbg 추천)
타겟 프로그램 기능:
x32dbg 분석 (main함수 같다?)
SUCCESS 와 Hidden message! 메세지가 숨겨져있다.
근데 Hidden message가 출력되려면 위에서 5: Quit에서 5를 눌러도 프로그램이 종료되지 않게 해야한다.
따라서 파란색 화살표 처럼 402d66에서 402d71로 넘어갈 수 있게 수정해줘야한다.
[필수2]
잘 모르겠다. 추후 수정하겠습니다.
'리버싱 > 리버싱 걸음마' 카테고리의 다른 글
정보보안 SUA - [정보보안공부] 7주차 과제 - DLL Injection 수행 (0) | 2021.03.17 |
---|---|
정보보안 SUA - [정보보안공부] 5주차 과제 - Hooking의 기초 (0) | 2021.03.03 |
정보보안 SUA - [정보보안공부] 4주차 과제 - Windows 데스크톱 앱 개발 (0) | 2021.02.26 |
정보보안 SUA - [정보보안공부] 3주차 과제 - 리버싱 로드 맵 및 PE로더 (0) | 2021.02.24 |
정보보안 SUA - [정보보안공부] 2주차 과제 - Windows 데스크톱 앱 개C/C++ 언어의 다양한 개념들이 x86 어셈블리 언어로 변환 결과물 (0) | 2021.02.05 |