본문 바로가기

Reverse Engineering/CodeEngn Basic

[리버싱] CodeEngn Basic RCE L08

문제 설명


개념 설명

OEP(Open Entry Point): 프로그램의 시작지점을 뜻한다.


upx로 압축을 하면 PUSHAD와 POPAD가 한 쌍이 된다.

PUSHAD실행 후 맨 위의 스택 주소를 덤프하여 브레이크 포인트를 지정한다.

다시 실행하면 POPAD에서 멈추게 되는데 이때 JMP에 있는 주소가 OEP가 된다.


*[PUSHAD] 현재 모든 범용 레지스터의 저장 값을 스택으로 push

* [POPAD]스택에 저장된 모든 값들을 ESP를 기준으로 불러옴


문제 풀이

일단 08.exe를 이뮤니티 디버거에서 열어보자.

이렇게 평소와는 다른 어셈블리어가 나온다.

upx로 압축을 한 파일을 압축을 풀지 않고 열었기 때문이다.


 

이제 die를 이용해 upx 파일인걸 확인해준다. 그리고 upx를 이용해 프로그램을 압축해제 해준다.

 

그리고 시작지점을 확인해준다. 아까 스택에 저장된 

 

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

 

 

성공이다.