Abex_CrackMe 5

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

Moderator: amesianx

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

Abex_CrackMe 5

Post by KSH » Fri Aug 26, 2016 8:00 pm

Abex_CrackMe 5 공략

1.프로그램 실행
1.png
1.png (48.13 KiB) Viewed 497 times
serial을 입력하라 하고 잘못된 암호를 입력하면 에러메시지를 출력하면서 종료합니다.
이 프로그램을 살펴보겠습니다.

2.디버깅
문자열을 검색하였습니다.
2.png
2.png (8.39 KiB) Viewed 497 times
Yep, you ~~~가 보이네요 명령어의 위치로 이동하였습니다.
3.png
3.png (39.04 KiB) Viewed 497 times
Yep~~에서 조금 올라가보면 cmp eax,0과 je 401117이 있습니다. 이것이 해답의 분기점일겁니다.
분기점에서 좀 더 올라가보면 lstrcat함수가 있습니다. 문자열을 붙이면서 암호를 대입할 것입니다.
테스트를 위해 첫번째 lstrcat함수의 인자를 푸쉬하는 부분에 브레이크를 걸고 실행하였습니다.
4.png
4.png (24.48 KiB) Viewed 497 times
lstrcat함수까지 실행시키면 4023F3에 있는 "4562-ABEX"를 40225C에 붙이게 됩니다.
5.png
5.png (7.8 KiB) Viewed 497 times
40225C에 "4562-ABEX" 문자열이 붙었습니다.

lstrcat함수를 실행한 이후에는 di에 2를 대입합니다.
그리고 40225C~40225F에 있는 값을 1씩 더해주고 di를 1감소시킵니다.
di가 0이 아니라면 ZF가0이 되면서 40225C~40225F에 있는 값을 더하는 것을 반복합니다.
di가 0이 되면 ZF가 1이 되면서 프로그램을 진행합니다.

di에 2가 들어갔기에 두 번 반복할 겁니다.
그렇게 되면 두번 덧셈을 수행하면서 40225C의 값은 6784-ABEX가 됩니다.
6.png
6.png (7.75 KiB) Viewed 497 times
예상대로 값이 바뀌었습니다.

이후에는 lstrcat함수를 2회 더 호출하고 입력한 값과 serial을 비교합니다.
첫번째 lstrcat함수는 402000에 4023FD의 값인 "L2C-5781"을 붙입니다.
두번째 lstrcat함수는 402000에 반복문을 수행하면서 변경된 40225C의 값인 "6784-ABEX"를 붙입니다.
두번째 lstrcat함수까지 실행해준 뒤 402000을 살펴보면
7.png
7.png (8.24 KiB) Viewed 497 times
"L2C-57816784-ABEX"를 볼 수 있습니다.

모든 lstrcat함수를 실행한 후에는 lstrcmpiA함수로 처음에 입력한 402324의 AAAA와 402000의 값을 비교합니다.
두 값이 일치하다면eax에 0을, 일치하지 않는다면 1을 반환할 것입니다.
그리고 cmp eax, 0을 수행하여 ZF가 1이라면 401117로 점프하여 성공메시지를 띄웁니다.
ZF가 0이라면 점프하지 않고 에러메시지를 띄운 뒤 종료합니다.

AAAA를 입력한 상태로 계속해서 실행하면
8.png
8.png (13.55 KiB) Viewed 497 times
역시 실패합니다.

프로그램을 다시 실행시켜서 L2C-57816784-ABEX를 입력한다면 성공할겁니다.

3.클리어
9.png
9.png (46.92 KiB) Viewed 497 times
깼습니다.

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest