Abex's crackme 3번 문제이다.

crackme3.exe
0.01MB

프로그램을 실행시키면, 키파일이 있을 경우 OK를 누르라고 한다.

키파일??
파일을 찾을 수가 없다

그래서 그냥 OK를 눌러보면, 파일을 찾을 수가 없다고 뜨면서 프로그램이 종료된다. 프로그램 내부에서 인식되는 파일이 존재해야 넘어가는 구조인 것 같다. 디버깅을 수행해 보았다.

코드 부분이 매우 짧은 편이다. 전반적으로 시스템 콜도 간단한 것 위주로 사용되어서, 분석이 용이한 편이었다.

프로그램을 쭉 분석하면 CreateFileA라는 시스템 콜과, GetFileSize라는 시스템 콜이 눈에 띈다. 이 두 시스템 콜을 확인해 본 결과, CreateFileA라는 시스템 콜은 인자로 받은 파일의 포인터를 반환한다. 프로그램의 흐름을 확인해 보면, abex.l2c라는 이름의 파일의 포인터를 받고, 이를 GetFileSize라는 시스템 콜의 인자로 다시 넣어주는 것을 확인할 수 있다. GetFileSize라는 시스템 콜은 파일의 크기를 리턴한다. 이를 12와 비교하고, 00401049 주소 부분의 JNZ를 통해 분기를 수행한다.

따라서 해당 프로그램은 abex.l2c라는 이름의 파일이 키 파일이 된다. 이때, 비교해주는 12라는 값이 16진수 값이기 때문에 10진수 값으로는 18에 해당한다. 따라서 18바이트의 파일을 crackme #3와 같은 경로에 만들어 주면 프로그램이 정상적으로 수행된다.

18바이트 크기의 abex.l2c 파일을 만들어준다
Success!

 

반응형

'Security > ISANG' 카테고리의 다른 글

[Reversing] abex's crackme #5  (0) 2021.03.29
[Reversing] abex's crackme #4  (0) 2021.03.29
[Reversing] abex's crackme #2  (0) 2021.03.29
[Reversing] abex's crackme #1  (0) 2021.03.28

+ Recent posts