728x90
1) StolenByte를 구하는 문제
더보기
※ StolenByte
: 패커가 위치를 이동시킨 코드로써 보호된 프로그램 코드의 윗부분
- 이동된 코드들은 OEP 주소로 점프하기 전에 PUSH가 된다. UPX패킹이 되어있는 프로그램에서는 마지막 JMP를 하기 전 POPAD 이후의 PUSH를 해주는 코드이다. StolenByte를 복구하지 못하면 위와 같이 정상적으로 작동하지 못한다.
2) 09.exe 실행 화면
3) PEiD를 통해 UPX로 패킹되어 있는 것 확인
4) upx.exe로 언패킹 진행
5) 언패킹 후 실행 화면 - 글씨 깨짐
6) 올리디버거(언패킹 09.exe 실행) - OEP 주소 쪽이 NOP로 채워진 것을 확인 - StolenByte가 있어야 하는 부분으로 유추
7) UPX 패킹 되어 있는 09.exe 파일 구조 : PUSHAD-코드-POPAD-코드-JMP
8) StolenByte : POPAD 한 다음에 오는 코드에서 PUSH 부분 → PUSH 0, PUSH 09.00402000, PUSH 09.00402012
9) StolenByte 복구
10) new09.exe 덤프 따서 정상적인 실행 확인 (Plugins → 4 OllyDump → Dump debugged process)
11) 글씨가 깨지지 않고 잘 실행되는 것 확인
12) 정답 코드 : 복구할 때 입력했던 StolenByte = 6A0068002040006812204000
'CodeEngn' 카테고리의 다른 글
CodeEngn.com Basic RCE L11 (0) | 2023.12.22 |
---|---|
CodeEngn.com Basic RCE L10 (0) | 2023.12.22 |
CodeEngn.com Basic RCE L08 (0) | 2023.12.22 |
CodeEngn.com Basic RCE L06 (0) | 2023.12.21 |
CodeEngn.com Basic RCE L05 (0) | 2023.12.21 |