[그림 1] 문제

OEP를 찾고 Stolenbyte까지 찾는 문제이다.

OEP를 찾는 문제이므로 패킹되어있을 가능성이 아주 높다.

 

[그림 2] PEiD로 확인

PEiD로 확인해본 결과, UPX로 패킹이 되어있다. UPX로 패킹되어 있는 실행파일은 간단하게 upx 툴을 이용하여 언패킹이 가능하다.

 

[그림 3] upx -d 옵션으로 언패킹
[그림 4] 언패킹 된 11.exe를 OllyDBG로 실행

언패킹된 실행 파일을 다시 OllyDBG에 올렸더니 

MessageBox 함수에 들어갈 인자가 모자름을 단번에 알 수 있었다.

 

[그림 5] MessageBox

결과는 예상대로 깨진 문자열이 나온다.

이는 unpacking시 문제가 됐을 가능성이 있으므로 unpacking 되지 않은 파일의 POPAD 명령어 부분을 확인해보았다.

 

[그림 6] 패킹되어있는 11.exe의 POPAD 부분

POPAD 이후 스택에 적재되는 세 개의 값을 확인할 수 있었다.

 

OEP로 점프하는 구간에 BP를 걸고 실행시켰더니

MessageBoxA 함수 호출에 필요한 인자들이 스택에 PUSH 됨을 알 수 있고,

이를 통해 PUSH 되는 인자들이 StolenByte 임을 확인했다.

 

 

[그림 7] 코드 수정

Unpacking 했던 실행 파일에서 Ctrl+E를 통해 코드 수정을 하였다.

 

 

[그림 8] 정상적 실행 확인

부족한 인자를 완성 시키고 실행시켰더니 그림8과 같이 정상적으로 실행됨을 확인할 수 있다

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

CodeEngn Challenge : Basic RCE L14  (0) 2021.05.11
[HackCTF] Reversing Me 풀이  (0) 2021.05.11
CodeEngn Challenge : Basic RCE L10  (0) 2021.05.06
CodeEngn Challenge : Advance RCE L09  (0) 2021.04.28
CodeEngn Challenge : Advance RCE L03  (0) 2021.04.28

+ Recent posts