Write-up/Wargame

Abex Crackme #3

Dalseung 2020. 9. 19. 18:40

Abex Crackme #3

Program review

Abex Crackme 3번째 문제이다.

프로그램을 동작해보자

image

확인 버튼을 클릭하면 Keyfile을 체크할거라고 한다.

 

image

확인 버튼을 눌렀더니 "파일을 찾을 수 없다" 라고 말한다.

x32dbg로 프로그램을 까보자

 

Debugging

image

프로그램을 x32dbg로 까면 이렇게 뜬다.

현재 위치한 곳은 main시작부분이다.

 

call <JMP.&createFileA>의 함수 부분에서 "Click OK to check for the keyfile"이라는 문자열이 나오면서 abex.l2c 파일이 있는지 검사한다.

만약 파일이 없으면 Error 메세지 창 부분으로 점프를 하고,

파일이 있으면 파일의 사이즈를 검사하는 함수인 call <JMP.&GetFileSize>로 간다.

 

따라서 이 프로그램을 정상 실행할 수 있도록 하는 방법은 두가지가 있다.

  1. 분기문을 조작
  2. abex.l2c파일을 생성

Solution #1 :: 분기문 조작

image

방법 1. Je crackme3.401075를 Jne로 바꾸어 에러 창으로 가지 않게 한 뒤,

CMP eax,12부분을 CMP eax,eax로 고친다.

image

Result

image

완료

Solution #2 :: 파일 생성

위 프로그램과 같은 경로에 abex.l2c파일을 만든다.

image

물론 안되겠지만 그리고 나서 프로그램을 돌려보자

image

찾은 파일이 유효하지 않는 keyfile이라고 뜬다.

앞서 말한 파일의 사이즈를 검사하는 함수가 있어서 거기서 걸린 모양이다.

 

따라서 파일 사이즈를 맞추던지, 분기문을 고치던지 해야할 것같다.

분기문은 앞서서 했으므로 파일 사이즈를 맞춰서 하도록 하겠다.

 

image

call 뒤에 CMP eax, 12인데 아마 call 함수로 시작된 함수의 리턴 값이 eax로 들어갔을 것이다.

파일 사이즈를 알아내는 함수였으므로 eax는 파일 사이즈를 나타내는 값일 것이다.

 

따라서 eax가 12가 되기 위해서 파일사이즈를 12가 되도록 해야한다.

 

EIP가 0x00401046일때 현재 파일에 아무 내용이 없으므로 eax가 0인 상태이다.

image

 

파일 사이즈를 늘려보자

image

1을 5개 썼다.

image

eax가 5가 됐다.

아싸 이제 1을 12개 넣자.이렇게 생각하면 바보다.

16진수이니까 1을 18개 넣어야한다.

image

Result

imageimage

 

clear

'Write-up > Wargame' 카테고리의 다른 글

[Dreamhack wargame] Quiz: x86 Assembly 1 풀이  (2) 2022.09.25
Abex's Crackme #4  (1) 2021.04.27
Abex Crack me #2.2  (0) 2020.05.01
Abex Crack me #2.1  (0) 2020.05.01
Abex Crack me #1  (0) 2020.04.30