티스토리 뷰

기타

Visual Basic 파일의 특징

맥밤 2016. 1. 12. 17:07

이 블로그는 제가 공부한 것을 바탕으로 정리 목적으로 사용되고 있습니다.

작성 내용중 부족한 부분이나 잘못된 부분을 지적해주시면 감사하겠습니다 (꾸벅)


VB으로 제작되어진 파일들을 디버깅을 하기전에 먼저 Visual Basic 파일의 특징을 살펴보려 한다.


1. VB 전용 엔진

VB 파일은 MSVBVM60.dll(Microsoft Visual Basic Virtual Machine 6.0) 이라는 VB 전용 엔진을 사용한다.

VB 엔진의 사용의 예를 들어보면 메시지 박스를 출력하고 싶을 때 VB 소스코드에서 MsgBox() 함수를 사용한다.

VB 컴파일러는 실제로 MSVBVM60.dll!rtsMsgBox() 함수가 호출되도록 만들고, 이 함수 내부에서 Win 32 API인 user32.dll!MessageBoxW() 

함수를 호출해주는 방식으로 동작한다.


2. N(Native) code, P(Pseudo) code

VB 파일은 컴파일 옵션에 따라서 N code와 P code로 컴파일이 가능하다. N code는 일반적인 디버거에서 해석 가능한 IA-32 Instruction을 

사용하는 반면에 P code는 인터프리터 언어 개념으로 VB 엔진으로 가상 머신을 구현하여 자체적으로 해석 가능한 명령어를 사용하는 것이다.

따라서 VB의 P code를 정확히 해석하려면 VB 엔진을 분석하여 에뮬레이터를 구현하여야 한다. 


3. Event Handler

VB 는 주로 GUI 프로그래밍을 할 때 사용되며, IDE 인터페이스 자체도 GUI 프로그래밍에 최적화되어 있다. 즉 VB 프로그램은 Windows 운영체제의

Event Driven 방식으로 동작하기 때문에 main() 혹은 WinMain() 에 사용자 코드가 존재하는 것이 아니라, 

각 event handler에 사용자 코드가 존재한다.


4. undocumented 구조체

VB 에서 사용되는 가종 정보들 (DIalog, Control, Form, Module, Function) 은 내부적으로 구조체 형식으로 파일에 저장된다.

마이크로소프트에서 이러한 구조체 정보를 정식으로 공개하지 않아 디버깅에 어려움이 있다.



<출처 : 리버싱 핵심 원리; 저자 : 이승원 >

'기타' 카테고리의 다른 글

main()함수 외에 다른 함수를 만들어야 하는 이유  (0) 2016.04.06
Linux curl 명령어  (0) 2016.03.15
Process Explorer - 작업 관리자  (0) 2015.12.29
ASCII 코드  (0) 2015.12.28
정적분석? 동적분석  (0) 2015.12.26
댓글