리버싱 입문

[리버싱 입문](15)[Lena 1]

황올뱀 2025. 3. 7. 21:19

 

Lena 1

 

이번 문제는 실행하면 파일을 구매하지 않았다는 창만 뜬다. 이 구매 여부를 우회해야 한다

 

 

조건문 위를 보면 CreateFileA가 보인다. (리버싱 입문 5 참고)

매개변수를 보면 Keyfile.dat가 있다면 열고 없으면 오류로 EAX에 2가 저장되어 구매 창이 뜬다.

따라서 Keyfile.dat파일을 해당 문제와 같은 디렉터리에 생성한 후 다음으로 넘어가겠다.

 

 

키파일이 있는지 검사한 후에는 ReadFile로 파일을 읽는다. 그냥 빈 키파일이면 vaild keyfile이 아니라고 한다.

not valid가 뜨는 이유

- https://learn.microsoft.com/ko-kr/windows/win32/api/fileapi/nf-fileapi-readfile

를 보면 실패하면 0을 반환한다. 따라서 읽기를 실패하면 not valid가 뜬다.

- 조건이 충족되지 않은 경우

첫번째 조건문에서는 키파일의 바이트 수를 판단한다.

만약 키파일의 바이트 수가 0x10(16)보다 작으면 not valid가 된다.

두번째는 반복문으로 검사하는데, 키파일의 바이트 한자리씩 47과 같은지 검사한다.

이후 47과 같은게 8개 미만이면 not valid가 뜬다.

 

따라서 키파일을 GGGGGGGGG123456789와 같이 만든다면 correct가 뜬다.

 

728x90
반응형