리버싱/리버싱 문제 코드엔진

코드엔진 Basic RCE L08

상세 2021. 7. 21. 00:52

문제 : OEP를 구하시오 Ex) 00400000

답 : "01012475" <-드래그

 

1. 프로그램 살펴보기

실행파일을 더블클릭해 보았더니 평범한 계산기 프로그램임을 알 수 있었다.

문제에서 언패킹을 하라고 지시했으니, 어떤 패커로 패킹되어 있는지 알기 위해 Detect It Easy를 통해 알아보았다. 

익숙한 이름인 UPX 패커로 패킹되어 있었다. 이제 디버거를 통해 프로그램을 분석해 보겠다.

2. 디버거로 프로그램 분석하기

UPX로 패킹되어있다는 것을 증명하듯, PUSHAD로 시작하고 있다. UPX라는 패커로 패킹된 프로그램은 POPAD 명령어 아래 부분에 OEP로 점프하는 JMP 명령어가 있을 것이므로, 아래로 내려가 POPAD명령어를 찾고 브레이크 포인트를 걸었다.

POPAD 명령어가 있는 부분

F9를 눌러 BP까지 와준 후 JNE명령어 도달시 무한루프되는 부분을 제로 플레그를 1로 만들어 주어 JMP명령어를 실행하였다.  

이를 통해 이곳이 OEP라고 추측할 수 있다.

 

 3. 정답확인 

Auth에 가서 정답확인을 해보았다.

정답이였다.

'리버싱 > 리버싱 문제 코드엔진' 카테고리의 다른 글

코드엔진 Basic RCE L10  (0) 2021.08.03
코드엔진 Basic RCE L09  (0) 2021.07.27
코드엔진 Basic RCE L07  (0) 2021.07.21
코드엔진 Basic RCE L06  (0) 2021.07.13
코드엔진 Basic RCE L05  (0) 2021.05.25