본문 바로가기

리버싱/Lena Tutorial

level 9

이번장에는 비주얼베이직 시리얼키를 찾는 것이 목표이다.

 

프로그램을 실행하면 위 사진처럼 프로그램의 시리얼키를 입력하는 창이 나온다.
PEID툴로 확인하면 이 프로그램은 비주얼베이직으로 작성된 것임을 알 수 있다.

비주얼베이직 뿐만 아니라 자바, 파이썬과 같은 고급언어들은 디컴파일을 해야한다.

 

비주얼베이직에서 주로 사용하는 함수들이다.

__vbaVarTstEq
__vbaVarTstNe
__vbaVarCmpEq
__vbaStrCmp
__vbaStrComp
__vbaStrCompVar

 

올리디버거에서 (Ctrl+N)을 누르면 NAME창이 열린다. 여기서 __vba관련 함수들이 나오는데 여기서 "vbavarteq"를 입력한다
"00401170"번지에 위치한 __vbaVarTstEq를 Import하여 사용하고 있다.

그럼 해당함수를 사용하는 모든 주소에 BP를 설치해 분석을 진행할 수 있는데 F2로 BP를 걸면 안된다. 왜냐하면 여기가 실행이 됐을 때 BP를 거는게 F2다. 하지만 __vbaVarTstEq는 주소를 참조하는 곳이므로 다른 방법으로 BP를 걸어야 한다. 

실행되는 해당 함수에서 "마우스 우클릭 -  Set breakpoint on every reference"를 클릭하면 해당 함수를 호출하는 모든 주소에 BP가 걸린다. 
프로그램을 실행(F9)하면 BP가 걸린 곳에 멈춘다. 그리고 F8을 이용해 한줄 씩 분석을 해야한다.
분석하다보면 "__vbaFreeVar"함수를 호출하고, DI, SI레지스터를 비교 후 분기가 일어난다.
분기가 일어나고 다시 BP걸린 곳을 볼 수 있다. 다시 계속 분석하다보면 분기문이 또 나오는데 분기된 곳에서 어떤 문자열을 EDX 레지스터에 저장하고, __vbaStrCopy함수를 호출한다. 그리고 사진 가장 아래를 보면 시리얼넘버를 EDX 레지스터에 저장하는 것도 확인할 수 있다

 

해당 문자열이 올바른 시리얼인지 판별하려면 아까 걸어둔 BP를 제거해야 한다. (Alt + B)를 눌러서 BP상태 창을 띄운 뒤
"마우스 우클릭 - Disable all"을 눌러 모든 BP를 비활성화 한다.

 

시리얼넘버를 입력하면 위와 같은 창이 뜬다

 

'리버싱 > Lena Tutorial' 카테고리의 다른 글

level 8  (0) 2019.08.16
level 5  (0) 2019.05.23
level 4  (0) 2019.05.21
level 3  (0) 2019.05.20
level 2  (0) 2019.05.17