카테고리 없음

[Code Engn Challenge] Basic 15

미숫가루빙수 2024. 5. 12. 21:16

 

 

이름이 CodeEngn일 때 시리얼을 구하는 문제이다.

제대로 된 이름과 시리얼을 입력하면 성공 문구가 뜰 것이라 예상한다.

 

 

 

7-zip으로 압축을 풀어주고, DIE로 다시 한번 확인한다.

따로 압축을 풀 건 없었다.

 

압축을 풀어준 exe파일을 실행시키면 다음과 같은 화면이 뜬다.

이름으로는 CodeEngn, 시리얼으로는 1234를 쳤다.

 

결과 값으로 'Try Again !'이 출력되었다.

Immunity Debugger로 이동해서 이 문구가 출력되는 부분을 찾으면

근처에 성공 문구 또한 있을 것이라 예상한다.

 

이 성공 문구를 찾을 예정이다.

 

 

 

예상대로 성공 문구를 찾을 수 있었다.

이 함수가 시작되는 부분인 00458800에 break를 걸었다.

 

 

 

실행을 시킨 뒤 이름은 CodeEngn, 시리얼은 1234를 입력했다.

그러면 아까 브레이크를 걸어둔 00458800로 이동하게 된다.

 

여기서 한 줄 씩 실행을 시켜보면, 00458837에서 

자동으로 점프되어 "Try Again !"이 출력된다.

 

CMP에서 eax와 0045B844의 값을 비교하고

같지 않으면 JNZ에 있는 주소 점프하게 되는 형식이다.

 

그렇다면 0045B844에 들어가 있는 값이 무엇인지 찾아야한다.

 

 

Hex 창에서 주소 0045B844로 이동한다.

0045B844의 값은 61 60인 것을 알 수 있다.

(Intel은 "리틀엔디안"으로 뒤에서부터 읽는다.)

 

61 60을 10진수로 바꾸어주면 24928가 된다.

이번에는 24928를 시리얼로 넣어보겠다.

 

 

이름은 CodeEngn, 시리얼은 24928로 넣어주었다.

이번에는 무사히 CMP와 JNZ를 통과했다.

 

한 줄 씩 실행하면 다음과 같은 성공 창이 뜬다.