본문 바로가기

[+] Information/[-] RCE

abex3 Crackme 풀이.

간단하기에(?) 한번 써봐요 ㅋㅋㅋㅋㅋ

이번 크랙미의 목표는 키파일을 찾는 것입니다.

우리는 프로그램을 분석하여 그 키파일이 무엇인지 알아내고 그에 맞게 키파일을 만들어주면 되는 것입니다.

일단은 디버거로 프로그램을 열어보죠 ㅎㅎ

 

00401025    68 B9204000   PUSH abexcrac.004020B9                    ; ASCII "abex.l2c"    // 프로그램이 찾고자 하는 키파일의 이름을 PUSH 해주고 있네요

0040102A    E8 5E000000   CALL <JMP.&KERNEL32.CreateFileA>
0040102F    A3 CA204000   MOV DWORD PTR DS:[4020CA],EAX
00401034    83F8 FF       CMP EAX,-1
00401037    74 3C         JE SHORT abexcrac.00401075
00401039    6A 00         PUSH 0
0040103B    FF35 CA204000 PUSH DWORD PTR DS:[4020CA]
00401041    E8 4D000000   CALL <JMP.&KERNEL32.GetFileSize> // GetFileSize함수를 Call
00401046    83F8 12       CMP EAX,12   // Call한 GetFileSize의 값과 원하는 키파일의 사이즈를 비교한다.(12는 16진수)
00401049    75 15         JNZ SHORT abexcrac.00401060   //  위에서 비교한 값이 참이면 점프를 하지 않고 거짓이면 점프를 하게 됩니다.


키파일을 못찾으니 찾았다는 메시지를 점프하여 그 밑에 있는 에러구문으로 프로그램의 흐름이 이동하는군요.

그럼 이제 원하는 키파일을 만들어 주자구요 ^^!!

일단은 알아두셔야 할것이 12는 10진수로 바꾸면 18입니다.

즉, 제목이 abex.l2c 이고 사이즈는 18바이트이면 되는 것입니다.


저는 아래와 같이 만들었습니다.


키파일을 위와같이 만들어주고 문제가 있는 폴더나 경로에 두고 프로그램을 실행하면 아래와 같이 나옵니다.



제대로 키파일을 찾았다는 메시지가 나오네요.

점프문으로 수정할수도 있는 프로그램이었지만 분석도 그리 어렵지 않기때문에 프로그램의 목적대로 푸는게 이번 크랙미의 참된 풀이라 생각이 됩니다.

분석능력도 길러지고 말이죠.. ^^

다음에 또 크랙미 풀이들고 올께요 ㅋ

밑에 파일은 이번 크랙미 파일입니다.