티스토리 뷰
이번 포스팅에서는 Visual Basic이라는 언어를 사용해 만들어진 프로그램들을 리버싱을 통해 분석할 때 주의해야할 점과 차이점에 대해서 설명한다.
- VB 전용엔진을 사용한다. (MSUBUM60.dll 파일)
결과적으로 MSUBUM60.dll의 API를 우리가 호출하게되면 내부적으로 그 API에서 필요로하는
Windows API들을 다시한번 호출해주는 과정을 거친다.
JAVA의 JVM과 비스무리한 느낌이기는 하다..?
- N code, P code가 존재한다.
N code는 Nature Code의 약자로 우리가 평상시에 사용하던 VC++에서 사용하던 코드이다.
반면에 P code는 VB 전용엔진에서만 해석이 가능한 코드를 말한다. (이식성이 증가한다.)
- Event Handler 사용.
Windows의 Event Driven 방식으로 동작.
모든 코드는 Handler 부분에 존재한다. ( main조차도 Handler코드로써 동작 )
- Undocumented 구조체.
각종 정보들은 내부적으로 구조체에 포함되어서 동작한다.
이 구조체는 공개되지않아서 외부에서 동적분석으로도 해당 데이터를 확인하기 어렵다.
< 분석 팁 >
1. MSUBUM60.dll 의 __vbaVarTstEq, __vbaVarCmpEq, __vbaVarTextTstEq, rtcMsgBox 와 같은 API를
기억해 이를 BreakPoint로 삼아서 Handler부분에 접근할 수 있다.
2. VB Decompiler Pro 를 통해 P Code를 디컴파일할 수 있다.
이렇게 디컴파일을 한 경우 해당 EventHandler의 주소를 얻을 수 있고,
OllyDBG 상에서 해당 주소를 직접 접근하면 그에 대한 코드를 획득할 수 있다.
진짜 말도안되게 편한거같은데..
'Reversing > Concept' 카테고리의 다른 글
[Reversing] PE File Format 2 ( Feat. 나뭇잎 ) (0) | 2020.01.14 |
---|---|
[Reversing] RVA → RAW ( Feat. 나뭇잎 ) (0) | 2020.01.14 |
[Reversing] PE File Format 1 ( Feat. 나뭇잎 ) (0) | 2020.01.14 |
[Reversing] Register & Stack ? ( Feat. 나뭇잎 ) (0) | 2020.01.13 |
[Reversing] 정적분석 & 동적분석 ( Feat. 나뭇잎 ) (0) | 2020.01.13 |