1. VB 전용 엔진사용
- VB파일은 MSVBVM60.dll 이라는 VB전용 엔진을 사용한다. (ex. 메시지박스를 출력하고 싶을 때 VB소스코드에서 MsgBox() 함수를 사용한다. VB컴파일러는 실제로 MSVBVM60.dll !rtc MsgBox()가 호출 되도록 만들고 이 함수 내부에서 Win32 API인 user32.dll !MessageBoxW() 함수를 호출해준다.
2. N(Native) code, P(Pseudo) code의 구분
- VB파일은 컴파일 옵션에 따라서 N code와 P code로 컴파일이 가능함.
- N code는 일반적인 디버거에서 해석 가능한 IA-32 인스트럭션을 사용하지만, P code는 VB엔진으로 가상머신을 구현하여 자체적으로 해석 가능한 명령어를 사용한다. VB P code를 정확히 분석하려면 에뮬레이터를 구현하여야함.
3. Event Handler
- VB는 대부분 GUI프로그래밍이라 Windows 운영체제의 Event Driven방식의 동작으로써 main(), Winmain()에 사용자 코드가 존재하는게 아니라 각 event handler에 사용자 코드가 존재함.
4. undocumented 구조체
- VB에서 사용되는 각종 정보들(Dialog, Control, Form, Module, Function, etc)은 내부적으로 구조체 형식으로 파일에 저장된다.
'Hacking > Reversing' 카테고리의 다른 글
PE File Format - (1) (0) | 2016.09.26 |
---|---|
[리버싱] 함수의 에필로그, 함수 호출 규약 (0) | 2016.05.11 |
[리버싱] IA-32 레지스터의 종류 (기초) (0) | 2016.04.28 |
[리버싱] Messagebox 문자열 패치 (0) | 2016.04.28 |
[리버싱] 원하는 코드를 빨리 찾는 방법[Olly dbg] (0) | 2016.04.27 |