🤓 책 '리버싱 핵심원리'를 바탕으로 공부한 내용을 정리한 글입니다.
크랙 해야할 abex' crackme #2 문제의 파일 유형에 대해 알아보자
VB 전용 엔진
: VB파일은 MSVBNM60.dll이라는 VB전용 엔진을 사용
ex) 메시지 박스 출력 -> VB 소스 코드에서 MsgBox()
함수 호출 -> 내부에서 Win32 API인 user32.dll!MessageBoxW()
함수를 호출
N(Native) code & P(Pseudo) code
: 컴파일 옵션에 다라 Ncode와 P code로 컴파일이 가능
- N code
일반적인 디버거에서 해석 가능한 IA-32 Instruction 사용
- P code
Interpreter 언어 개념, VB 엔진으로 가상 머신을 구현해 자체적으로 해석 가능한 명령어를 사용
=> VB의 P code 해석을 위해서는 VB엔진을 분석하여 에뮬레이터 구현이 필요
Event Handler
: IDE인터페이스 자체도 GUI 프로그래밍에 최적화
- Windows 운영체제의 Event Driven 방식으로 동작
=> 각 evnet handler에 사용자 코드가 존재
- abex' crackme #2에서는 [Check] 버튼 handler에 사용자 코드가 존재할 것
undocumented 구조체
- VB에서 사용되는 각종 정보들은 구조체 형식으로 파일에 저장 되는데, Microsoft에서는 이러한 구조체 정보를 정식으로 공개하지 않아 디버깅에 어려움이 있음