리버싱

Reversing

Public Class 2020. 2. 19. 05:09

visual basic 파일의 특징 :

VB(Visual basic) 파일은 MSVBVM60.dll이라는 VB전용 엔진을 사용합니다. VB 컴파일러는

MSVBVM60.dLL! rtcMsgBox() -> (Win32 api) user32.dll! MessageBoxW() 함수를 호출해줍니다.

일반적 디버거에서 해석 가능한 IA-32 instruction을 사용하는 N code 와 P코드 VB엔진으로 가상 머신을 구현하여 자체적으로 해석 가능한 명령어(바이트 코드)로 나뉨 따라서 P코드를 해석하려면 VB엔진을 분석하여 에뮬레이터를 구현해야 함. (비슷한 걸로는 JVM..)

VB프로그램은 windows 운영체제의 event driven 방식으로 동작하기 때문에 main()에 사용자 코드가 존재하는 것이 아니라 각 , event handler에 사용자 코드가 존재함

VB문자열은 가변 문자열 타입을 이용 내부에 동적으로 할당한 실제 문자열 버퍼 주소를 가지고 있다.(Long - Address with ASCII dump <-> Hex - Hex/ASCII

stack  창 - follow in dump : 스택 주소에 저장되어있는 값을 주소로 인식해 메모리 창에서 보여준다.

VB파일 함수와 함수 사이에 NOP명령어가 존재하는데 아무 동작 안 한고 ( CPU 클럭만 소모됨 )

 

test ax, ax

je 4034076

는 그냥 if(ax == 0) goto 4034076 과 같음