Q12. Key를 구한 후 입력하게 되면 성공메시지를 볼 수 있다. 이때 성공메시지 대신 Key 값이 MessageBox에 출력 되도록 하려면 파일을 HexEdit로 오픈 한 다음 0x???? ~ 0x???? 영역에 Key 값을 overwrite 하면 된다. 문제 : Key값과 + 주소영역을 찾으시오. Ex) 7777777????????

Key 값을 인증하는 프로그램이다.

OllyDbg로 12.exe를 열어 분석하다 보면 성공 문구를 확인해 볼 수 있었다.

CMP명령어를 통해 EAX와 7A2896BF비교를 진행하고, JNZ 분기점을 만나 성공분기점으로 갈 수 있다.
40107D에서 BP(F2 단축키)를 걸고 디버깅을 통해 동적 분석을 진행했다.


Key값에 123을 넣고 디버깅 해서 EAX를 확인해보니 7B라는 값을 얻을 수 있었다.
7B라는 값을 10진수로 변환하면 123이 나오게 된다.
따라서 정리해보면 입력받은 Key 값은 10진수가 아니라 16진수로 받아 7A2896BF와 비교를 진행한다.
따라서 7A2896BF의 10진수 값이 KEY값이 된다.

따라서 10진수로 변환해보면 2049480383 값을 얻을 수 있었다.

[그림 6] 과정을 통해 얻은 Key값으로 인증 성공한 모습이다.
문제에서는 성공메세지 대신 MessageBox에 Key값을 출력하도록 overwrite하라고 했으므로 헥사 에디터 툴인 HxD로 12.exe을 열어보았다.

[그림 7] 과정으로 성공 메세지를 확인한 후, HxD에서 같은 문구를 D3B ~ D62주소에서 볼 수 있었다.
이 부분을 지우고 키 값인 2049480383을 overwrite 하면 된다.

그러면 2049480383 값이 0D3B~0D45에 해당 값이 들어가게 된다.
따라서 정답은 2049480383(KEY)+ 0D3B + 0D45 인 20494803830D3B0D45 가 된다.
'Reversing > CodeEngn' 카테고리의 다른 글
| [CodeEngn] RCE basic L14 풀이 (0) | 2025.09.03 |
|---|---|
| [CodeEngn] RCE basic L13 풀이 (0) | 2025.09.01 |
| [CodeEngn] RCE basic L11 풀이 (2) | 2025.09.01 |
| [CodeEngn] RCE basic L10 풀이 (3) | 2025.09.01 |
| [CodeEngn] RCE basic L09 풀이 (2) | 2025.09.01 |