Reversing/CodeEngn

[CodeEngn] RCE basic L11 풀이

chan2s 2025. 9. 1. 16:03

Q11. OEP를 찾으시오. Ex) 00401000 / Stolenbyte 를 찾으시오. Ex) FF35CA204000E84D000000 정답인증은 OEP+ Stolenbyte Ex ) 00401000FF35CA204000E84D000000

[그림 1] 11.exe 최초 실행 1
[그림 2] 11.exe 최초 실행 2

key 파일을 검사하는 프로그램인 것 같다.
문제에서 OEP를 찾으라고 했으므로 이번 프로그램 역시 패킹되어 있다는 것을 유추해볼 수 있다.

[그림 3] Exeinfo PE 11.exe 정보

Exeinfo PE를 통해 11.exe의 파일구조를 확인해본 결과 UPX 패킹으로 된 프로그램임을 확인했다.

[그림 4] 11.exe UPX 언패킹

upx -d 11.exe

UPX 언패킹 툴을 통해 11.exe를 언패킹을 진행해주었다.

[그림 5] OllyDbg 언패킹한 11.exe

OllyDbg로 UPX 언패킹한 11.exe를 열어보면 EP를 401000주소로 하는 것을 확인할 수 있다.
패킹한 위치의 EP는 OEP와 같으므로, OEP는 00401000 이다.
401000 ~ 40100B 까지 NOP로 보이는 구간이 있다. MessageBox의 들어가는 내용이므로, 실행해보면 글자가 깨질 것이다.

[그림 6] OllyDbg 원본 11.exe

OllyDbg로 다시 원본 11.exe로 열어서 분석을 진행했다.
POPAD는 40736D 주소에서 찾을 수 있었으며, 407387주소에서 OEP 주소를 찾아볼 수 있었다.

문제에서 제시한 Stolen Byte를 찾기 위해서는 POPAD와 OEP 사이의 연속되는 PUSH를 찾아야 했다.
Stolen Byte는 40736E ~ 407375에서 연속되는 PUSH 명령어를 확인할 수 있었고,
Stolen Byte의 12바이트인 데이터를 추출해보면 6A 00 68 00204000 68 12204000 이다.

다시 정답을 위해 조합을 해보면
OEP + Stolen Byte = 004010006A0068002040006812204000

'Reversing > CodeEngn' 카테고리의 다른 글

[CodeEngn] RCE basic L13 풀이  (0) 2025.09.01
[CodeEngn] RCE basic L12 풀이  (1) 2025.09.01
[CodeEngn] RCE basic L10 풀이  (3) 2025.09.01
[CodeEngn] RCE basic L09 풀이  (2) 2025.09.01
[CodeEngn] RCE basic L08 풀이  (0) 2025.09.01