일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 에밀 뒤르켐
- CodeEngn Basic 5
- BoB 12기
- CodeEngn Basic 01
- 논문리뷰
- 코드엔진 basic 5
- BoB 12기 최종합격 후기
- h4ckinggame
- bob
- 코드엔진
- malware
- 자살론
- 코드엔진 베이직
- 사회분업론
- codeengn basic rce 01
- 사회적 사실
- Best of the Best
- 리버싱
- 디지털 포렌식 트랙
- 철학
- CodeEngn
- Today
- Total
SEO
Control ID로 MFC 호출 함수를 찾아보자 (MFC 리버싱) 본문
https://h3llouniverse.blogspot.com/2016/09/event-mfc.html
Event 추적을 통한 MFC 리버싱
모든 MFC 파일들은 특정 행동들을 모두 Event로 보고 사용자의 행위에 따라 맞는 Event를 발생시키며 동작한다. 이 점을 통하여 MFC를 이해해고 있다면 리버싱을 통하여 자신이 원하는 부분을 빠르고
h3llouniverse.blogspot.com
위 글에서 Control ID 값으로 MFC 호출 함수를 찾아가는 내용을 확인했습니다.
처음보는 내용이라 신기해서 DreamHack babycmp 예제로 따라해본 내용을 풀이하겠습니다.
(처음에 이해 못하고 뻘짓해서 팀에 계신 연구원님께 여쭙고 알게된 내용 바탕으로 적었습니다..ㅋㅋ)
먼저 참고 글에서는 32bit 실행 파일을 사용하였고, 제가 사용한 예제 파일은 64bit 실행 파일입니다.

ResourceHacker의 dialog 폴더에서 사용자에게 보이는 gui 화면들을 확인할 수 있습니다.
SERIAL을 입력받는 message box 부분에서 사용자의 입력값을 체크하는 ID 값을 확인해보면 1005 라는 것을 알 수 있습니다.
이 ID 값을 16진수로 변환해 리틀 엔디언으로 표기하면 "ED 03" 입니다. 이 값을 통해 함수의 주소값을 찾을 수 있는데 그 이유는 아래 구조체 형식과 관련이 있습니다. 지금 찾은 ID 값이 nID에 속하는 control id 값이고, 이 값으로부터 4byte, 8byte 떨어져있는 곳에 값이 함수의 주소값입니다.
함수의 주소값은 32bit 기준으로 4byte, 64bit 기준으로 8byte를 읽으면 됩니다.
struct AFX_MSGMAP_ENTRY {
UINT nMessage; // 윈도우즈 메세지
UINT nCode; // 제어 코드 또는 WM_NOTIFY 코드 값
UINT nID; // control id
UINT nLastID; // control id의 범위를 정의하기 위한 엔트리
UINT nSig; // 메세지 핸들러 함수 프로토타입을 구분하는 식별값
AFX_PMSG pfn; // 메세지를 처리할 함수 포인터
};


64 bit 기준 ID 값부터 12byte 후에 함수의 주소를 확인할 수 있습니다.
함수의 주소를 빅엔디안으로 바꾸면 "0140001F60" 입니다.
이제 이 값을 가지고 IDA에서 함수를 찾아보겠습니다.

이렇게 Check 버튼과 관련된 코드를 찾을 수 있었습니다.
'Security > Reversing & Malware' 카테고리의 다른 글
WASM 리버싱 방법 (5) | 2024.11.20 |
---|---|
LockBit 2.0으로 알아보는 Anti-Debugging 기술 - NtGlobalFlag (0) | 2024.04.01 |
LockBit 2.0으로 알아보는 COM 객체를 이용한 UAC Bypass 기법 (0) | 2024.03.18 |
[은닉 기법] 자가 삭제/코드 조각화/프로세스 할로윙 (0) | 2024.03.13 |
[AV 탐지 우회 기법] Polymorphic 및 Metamorphic 기법 (다형성 및 변형 악성코드) (0) | 2024.03.10 |