문제 설명

개념 설명
OEP(Open Entry Point): 프로그램의 시작지점을 뜻한다.
upx로 압축을 하면 PUSHAD와 POPAD가 한 쌍이 된다.
PUSHAD실행 후 맨 위의 스택 주소를 덤프하여 브레이크 포인트를 지정한다.
다시 실행하면 POPAD에서 멈추게 되는데 이때 JMP에 있는 주소가 OEP가 된다.
*[PUSHAD] 현재 모든 범용 레지스터의 저장 값을 스택으로 push함
* [POPAD]스택에 저장된 모든 값들을 ESP를 기준으로 불러옴
문제 풀이
일단 08.exe를 이뮤니티 디버거에서 열어보자.

이렇게 평소와는 다른 어셈블리어가 나온다.
upx로 압축을 한 파일을 압축을 풀지 않고 열었기 때문이다.
이제 die를 이용해 upx 파일인걸 확인해준다. 그리고 upx를 이용해 프로그램을 압축해제 해준다.
그리고 시작지점을 확인해준다. 아까 스택에 저장된

정답을 확인하기위해 코드엔진에 입력해주면,

성공이다.
'Reverse Engineering > CodeEngn Basic' 카테고리의 다른 글
| [리버싱] CodeEngn Basic RCE L09 (0) | 2024.09.24 |
|---|---|
| [리버싱] CodeEngn Basic RCE L07 (0) | 2024.09.20 |
| [리버싱] CodeEngn Basic RCE L06 (0) | 2024.09.19 |
| [리버싱] CodeEngn Basic RCE L05 (0) | 2024.09.19 |
| [리버싱] CodeEngn Basic RCE L04 (0) | 2024.09.15 |