Reversing/CodeEngn

[CodeEngn] RCE basic L12 풀이

chan2s 2025. 9. 1. 17:06

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

[그림 1] 12.exe 최초 실행

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

[그림 2] OllyDbg 12.exe 성공 문구 확인

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

[그림 3] 40107D 비교문과 401082 성공 분기점

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

[그림 4] 임의의 값 '123'을 넣고 분석 진행
[그림 5] EAX 값 7B확인

Key값에 123을 넣고 디버깅 해서 EAX를 확인해보니 7B라는 값을 얻을 수 있었다.
7B라는 값을 10진수로 변환하면 123이 나오게 된다.

따라서 정리해보면 입력받은 Key 값은 10진수가 아니라 16진수로 받아 7A2896BF와 비교를 진행한다.
따라서 7A2896BF의 10진수 값이 KEY값이 된다.

[그림 6] 7A2896BF의 Hex to Dec 결과

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

[그림 7] Key값 인증 성공

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

[그림 8] HxD 12.exe

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

[그림 9] Key값 overwrite

그러면 2049480383 값이 0D3B~0D45에 해당 값이 들어가게 된다.
따라서 정답은 2049480383(KEY)+ 0D3B + 0D4520494803830D3B0D45 가 된다.

'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