Immunity Debugger로 실행파일을 열어보면 위와 같은 코드와 메세지창이 출력되는 것을 볼 수 있다.

F8키를 눌러 실행시켜보다가 00401037 부분에서 00401075 부분으로 점프하는 것을 확인할 수 있었다.

 

 

처음에는 이것도 1번 문제와 비슷한건가? 라고 생각해서 위와 같이 코드를 수정해주었더니 원하는 메세지창이 출력되는 것을 확인할 수 있었다.

 

그리고 이후에 힌트를 보니 CreateFile 함수에 대해 찾아보라고 했다.

 

CreateFile 함수는 파일 혹은 오브젝트를 생성하거나 열 수 있는 함수로 다른 함수들을 이용해서 파일을 읽거나 쓸 수 있다.

 

CreateFile 함수의 원형은 다음과 같다.

 

 

 

위의 부분을 보면 CreateFile 함수를 확인할 수 있고, 주석 부분을 보면 이름이 abex.l2c인 파일을 생성하는 코드를 확인할 수 있다.

 

 

그리고 위의 부분에서 GetFileSize 함수를 확인할 수 있고, 이는 파일의 사이즈를 리턴해준다.

00401046 부분을 보면 EAX레지스터의 값과 12를 CMP 하여 JNZ 해주는 것을 확인할 수 있는데

JNZ 명령어는 Jump If Not Equal이라는 의미 즉, 두 값이 같지 않을 때 해당 주소로 점프해주는 명령어이다.

Yep, keyfile found!라는 메세지를 출력하는 함수를 실행시키기 위해서는 00401049에서 바로 다음 주소인 0040104B로 넘어가게 만들어야 하므로 파일 사이즈가 12인 파일을 생성해주면 된다.

 

 

그래서 위와 같이 메모장으로 이름이 abex.l2c이고 파일사이즈가 12 (10진수로 바꾸면 18을 의미)인 파일을 임의로 생성한 후 실행시켜보면 원하는 메세지가 잘 출력되는 것을 확인할 수 있다.

'2020 WINTER STUDY > CTF Study' 카테고리의 다른 글

[Reversing] Day 3_suninatas 9  (0) 2021.02.18
[Reversing] Day 3_xcz.kr prob 9  (0) 2021.02.18
[Reversing] Day 2_abex' crackme #1  (0) 2021.02.16
[Reversing] Day 1  (0) 2021.02.15
[Forensic] Day 6  (0) 2021.02.07

+ Recent posts