외로운 Nova의 작업실

creackme 시리즈 - 1(crackme6.exe) 본문

Computer App Penetesting/Reversing

creackme 시리즈 - 1(crackme6.exe)

Nova_ 2022. 12. 29. 15:28

리버싱 입문에서 다루지 않은 crackme 시리즈를 리버싱 및 크랙해보려합니다.

Crackme_06.exe
0.45MB

 

- 문제인식

password를 입력하라고합니다. 윗부분에 오직 숫자라고 합니다. 1234를 입력해보겠습니다.

wrong으로 나옵니다. 아무래도 이번문제는 password를 알아내는 문제인 것 같습니다.

 

- 리버싱

 

이 프로그램은 아마 우리가 입력한 패스워드를 cmp 한후 값에따라 jmp할 것입니다. 따라서 문자열 wrong을 찾고 jmp문 부분을 추적해서 패스워드를 비교하는 cmp문을 찾아보도록 하겠습니다.

search for -referenced string을 통해 wrong을 찾았습니다. 한번 들어가보겠습니다.

실제가서 jmp문을 추적해보면 0040155c 주소에서 dmp문을 실행해서 wrong으로 가게됩니다.그위에 00401555 주소에 cmp 부분이 있는 것으로 확인됩니다. 이 부분이 바로 패스워드를 확인하는 부분인 것을 알 수 있습니다. 확인을 위해 JNE 부분에 bp를 걸고 zero 플래그를 1로 둔다음 correct 문자열이 나오는지 보겠습니다.

가정이 맞다는 것을 확인할 수 있습니다. 그렇다면 cmp문을 분석해보겠습니다.

CMP DWORD PTR SS:[EBP-4],7F97E56C

지역변수 하나를 7F97E56C와 비교하는 것을 알 수 있습니다. EBP-4 값이 뭔지 한번 확인해보겠습니다.

16진수 4D2는 10진수 1234 인것을 확인할 수 있습니다. 지역변수는 우리가 입력한 값임을 알 수 있습니다. 그렇다면 16진수 7F97 E56C는 10진수 몇일까요? 2,140,661,100 입니다. 이 숫자를 한번 입력해보겠습니다.

correct로 맞다고 뜹니다. 이제 크랙해봅시다.

 

- Crack

 

JNE 다르면 점프하는 것을 JE로 같으면 점프하는 것으로 변경해줍니다. 저장후 실행해보겠습니다.

Crackme_06(cracked).exe
0.45MB

Comments