Abex_CrackMe 4

해킹대회 문제 풀이 연습장소

Moderator: amesianx

Post Reply
KSH
Posts: 24
Joined: Thu Jul 21, 2016 5:39 pm

Abex_CrackMe 4

Post by KSH » Thu Aug 25, 2016 11:42 pm

Abex_CrackMe 4 공략

1.프로그램 실행
1.png
1.png (18.41 KiB) Viewed 495 times
이 문제는 문자를 아무리 입력해도 Registered가 활성되지 않아 오류메시지조차 띄울 수 없습니다.
이 문제의 핵심은 올바른 암호를 입력하여 Registered를 활성화시키는 것 같습니다.
프로그램을 살펴보기 위해 디버깅을 해보겠습니다.

2.디버깅
2.png
2.png (7.95 KiB) Viewed 495 times
문자열을 검색해서 Very good으로 이동해 보았더니
3.png
3.png (47.67 KiB) Viewed 495 times
버튼 활성화를 위한 특별한 단서가 보이지 않습니다.
이럴 때는 API검색을 해야합니다.
4.png
4.png (53 KiB) Viewed 495 times
어셈블리 명령의 주석을 보면 MSVBM60.DLL을 볼 수 있는데 이것은 Visual Basic 언어로 만들어진 프로그램이라는 뜻입니다.
따라서 VisaulBasic의 명령어를 검색하면 되는 것이기에 vba로 검색했습니다.
5.png
5.png (16.54 KiB) Viewed 495 times
검색해보면 vbaStrCmp함수가 있는 것을 볼 수 있습니다. 함수의 위치로 이동하였습니다.
vbaStrCmp함수는 eax와 ecx의 값을 비교하여 eax에 결과값을 저장할 것입니다.
6.png
6.png (13.84 KiB) Viewed 495 times
vbaStrCmp함수에서 조금 아래로 내려가보면 test di, di와 je 402371이 있습니다.
이것이 입력한 문자열과 암호를 비교하여 registered버튼을 활성화시키는 분기점일 것입니다.

eax와 ecx에 저장되는 내용을 확인하기 위해 0040230C에 브레이크를 걸어주고 프로그램을 실행 시켰습니다.
테스트를 위해 A를 입력 하자마자 디버거의 상태가 Paused로 바뀌었습니다.
7.png
7.png (45.2 KiB) Viewed 495 times
8.png
8.png (3.98 KiB) Viewed 495 times
EAX는 005E32BC를 가리키고 있습니다. 그 지점의 Dump를 보면
9.png
9.png (11.12 KiB) Viewed 495 times
입력한 A(아스키코드로 0x41)가 있습니다.

ECX는 005E32F4를 가리키고 있습니다. 그 지점의 Dump를 보면
10.png
10.png (7.78 KiB) Viewed 495 times
005E32F4에는 2247840이 들어있다는 것을 알 수 있습니다. (ECX 주석에도 있습니다.)
vbaStrCmp함수는 입력한 A와 2247840이 일치하는지 확인한 후 EAX에 값을 저장한 뒤, 일치하지 않는다면 402371로 점프할 것입니다.
일치한다면 점프를 하지않고 진행하여 registered 버튼을 활성화 하면서 버튼을 누르면 칭찬의 메시지가 나올 것입니다.

3.클리어
브레이크를 해제한 뒤 2247840을 입력하였습니다.
11.png
11.png (26.07 KiB) Viewed 495 times
깼습니다.

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest