abex crackme 3
이번에는 키파일이 있는지 알아보고 만약 정확한 키파일이 있다면 correct를 띄우는 파일이다.
만약 키파일이 없거나 키파일이 다르다면 wrong을 띄운다.

messageboxA로 창을 띄우고 질문하는 것까지는 1번 문제와 똑같다.
그러나 createfileA와 MOV DWORD PTR DS:\[4020CA],EAX를 지나고 eax값이 FFFFFFFF로 변경되어 file을 찾을 수 없다고 뜬다.
createfileA를 알아본다.
https://learn.microsoft.com/ko-kr/windows/win32/api/fileapi/nf-fileapi-createfilea
매개변수 Filename, DesiredAccess 등이 있다.
FileName이름의 파일을 DesiredAccess에 따라 읽거나 쓰거나 한다.

여기서는 DesiredAccess가 Genetic_read, 즉, 읽기모드라 FileName의 이름을 가진 파일이 필요하다.
createfileA의 매개변수를 보면 열 파일의 이름이 abex.l2c라는 것을 알 수 있다.
내 디렉터리에는 abex.l2c가 없어서 파일을 찾지 못했던 것이다.
따라서 파일 생성 후 다시 시도했다.
이제 valid file이 아니라고 한다. 밑에 있는 코드에서 getfilesize에서 반환값이 12가 아니라 아니라고 뜬 것이다.

getfilesize라는 이름에서 유추할 수 있듯, 파일의 크기를 바이트 단위로 반환하는 함수다.
https://learn.microsoft.com/ko-kr/windows/win32/api/fileapi/nf-fileapi-getfilesize
결국 파일의 크기를 0x12바이트, 즉, 18바이트로 맞춰주면 된다.
메모장에 reversingveryfunny라는 18바이트 문자열(문자 1개당 1바이트)을 쓰고 다시 시도하면 풀린다.
'리버싱 입문' 카테고리의 다른 글
[리버싱 입문](7)[abex crackme 4] (0) | 2025.02.11 |
---|---|
[리버싱 입문](6)[함수 호출 규약] (0) | 2025.02.10 |
[리버싱 입문](4)[abex crackme 2] (1) | 2025.02.06 |
[리버싱 입문](3)[abex crackme 1] (0) | 2025.02.05 |
[리버싱 입문](2)[PE파일] (0) | 2025.02.04 |