이번 크랙미의 목표는 키파일을 찾는 것입니다.
우리는 프로그램을 분석하여 그 키파일이 무엇인지 알아내고 그에 맞게 키파일을 만들어주면 되는 것입니다.
일단은 디버거로 프로그램을 열어보죠 ㅎㅎ
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바이트이면 되는 것입니다.
저는 아래와 같이 만들었습니다.
키파일을 위와같이 만들어주고 문제가 있는 폴더나 경로에 두고 프로그램을 실행하면 아래와 같이 나옵니다.
제대로 키파일을 찾았다는 메시지가 나오네요.
점프문으로 수정할수도 있는 프로그램이었지만 분석도 그리 어렵지 않기때문에 프로그램의 목적대로 푸는게 이번 크랙미의 참된 풀이라 생각이 됩니다.
분석능력도 길러지고 말이죠.. ^^
다음에 또 크랙미 풀이들고 올께요 ㅋ
밑에 파일은 이번 크랙미 파일입니다.
'[+] Information > [-] RCE' 카테고리의 다른 글
cffo-4 크랙미 풀이. (10) | 2009.04.14 |
---|---|
simples 시즌2 리버싱 문제 level1 풀이. (4) | 2009.04.14 |
심심해서 해본 닷지 리버싱 (9) | 2009.04.11 |
심심해서 Crackme 풀이 하나 써봐요 ^^ (6) | 2009.04.06 |