반응형
반응형

 

Write-up 쓴 날짜 : 2022-09-30 10:18

 

pc2am2p.exe
2.16MB
Re-Pair0.6.zip
0.01MB

 

목적 - Register Key를 찾아라

 

주제 - Explaining the Visual Basic concept, introduction to SmartCheck and configuration


분석 1

 

이 프로그램은 MS Visual Basic으로 만들어진 프로그램이다.

 

 

 

 

프로그램을 설치 후 실행하면 위와 같이 Register를 하라는 창이 뜬다.

 

아무런 값을 입력하지 않거나 어떠한 값을 입력하고 OK 버튼을 누르면 "Error Registration Key" 메세지가 뜬다.

 

 

등록하지 않은 버전은 위와 같이 20초가 최대치?라고 한다.

 


 

분석 2

 

 

x32dbg에 프로그램을 올리면 위와 같은 EP 코드가 보이는데 바로 ThunRTMain 함수를 호출한다.

 

VB 프로그램은 아래의 두 가지 특징으로 인해 이전의 다른 writeup에서의 프로그램들을 분석하는 방법과는 약간 비슷하면서도 다르게 분석해야 한다.

1. VB 프로그램은 DLL 파일 위주로 돌아가고, 중요한 DLL 파일 중 하나는 MSVBVM60.dll 이다.

2. Event Driven 방식의 프로그램이다.

 

더 자세한 내용은 아래의 링크를 통해 VB 프로그램의 특징을 파악한다.

https://sean.tistory.com/205?category=978374 

 

 

x32dbg 상단 메뉴들 중 위와 같은 아이콘이 있는데, 이 아이콘을 누르면 모듈간 함수들을 보여준다.

 

사용자가 입력한 등록키와 정해져 있는 등록키를 비교하는 부분이 있을 것인데, VB는 Event Deriven 방식이라 사용자가 등록키를 입력하고 이벤트를 발생시키면, 비교하는 함수를 호출할 것이기 때문에 "cmp"를 검색해보았다.

 

하지만 위와 같이 너무 많은 cmp 단어가 포함된 함수들이 있기 때문에 문자열로 검색을 해본다.

 

이전에 분석 1에서 Register Key를 입력하지 않고 OK 버튼을 누르면 "Error Registration Key" 문자열이 떴다.

 

 

디버거에서 문자열 찾기 기능(상단에 있는 Az 아이콘)에서 "Registration"을 검색하면 위와 같이 "Registration Success" 문자열이 있다.

 

5D0CBF 주소에서 이 문자열을 참조하는데 5D0CBF 주소로 가본다.

 

 

위와 같은 부분이 나오는데, "Registration Success" 문자열은 5D0CBF 주소에서 참조하여 vbaStrCopy 함수를 호출한다.

 

그리고 등록 성공 메세지를 띄우는 부분으로 점프하는 곳은 5D0C8C 주소에서 점프하는데

 

 

5D0C80 주소에서 어떤 함수를 호출하고 해당 함수의 반환값을 ebp-6C 주소에 저장한 뒤 0과 비교하는데 0이상이면 등록 성공 메세지를 띄우는 부분으로 간다.

 


풀이

 

 

"Registration Success" 문자열을 띄우는 부분의 함수 스택 프레임 쪽으로 가보면 위와 같이 5D0AC0 주소이다.

 

5D0AC0 주소에 BP를 걸고 F9 키로 실행한다.

 

 

Register 키를 입력하는 부분에 임시 값을 적고 OK 버튼을 누른다.

 

 

 

그리고 F8키를 눌러 진행하다보면, 5D0B6B 주소에서 5D0B8D 주소로 점프하고, ebp-34에는 이전에 입력했던 Register key 값이고, 5D8418 주소에 있는 데이터 "oeiu-564-oqei-97"를 어떤 함수의 인자로 넘긴다.

 

 

5D0BA2 주소에서 호출하는 40116C 주소의 함수 내부로 들어가면 위와 같다.

 

 

vbaStrComp 함수 호출 전까지 실행하면 스택에는 위와 같이 사용자가 입력한 Register key와 "oeiu-564-oqei-97" 가 들어가있다.

 

 

vbaStrComp 함수를 호출하고 나면 eax에는 1이 담기고, 함수가 끝난다.

 

즉, 위에서 스택에 넣었던 값 두개가 일치하지 않는다는 것이다.

 

그렇다면 "oeiu-564-oqei-97" 문자열이 Register key라는 것이다.

 

 

oeiu-564-oqei-97 를 입력하고 OK를 누르면 위와 같이 뜬다.

 

 

20초가 최대치라는 내용도 사라졌다.

 

 

 

 

 

 

 

 

 

 

 

 

반응형

'전쟁 > lena tuts4you' 카테고리의 다른 글

[Lenatuts4you] 10-2. ReverseMe2  (0) 2022.11.02
[Lenatuts4you] 10-1. Tut.ReverseMe1  (0) 2022.11.02
[Lenatuts4you] 8. artgem11  (0) 2022.11.02
[Lenatuts4you] 7. MrBills  (1) 2022.11.02
[Lenatuts4you] 6. pcsurgeon  (0) 2022.11.02

+ Recent posts