OEP를 찾고 Stolenbyte까지 찾는 문제이다.
OEP를 찾는 문제이므로 패킹되어있을 가능성이 아주 높다.
PEiD로 확인해본 결과, UPX로 패킹이 되어있다. UPX로 패킹되어 있는 실행파일은 간단하게 upx 툴을 이용하여 언패킹이 가능하다.
언패킹된 실행 파일을 다시 OllyDBG에 올렸더니
MessageBox 함수에 들어갈 인자가 모자름을 단번에 알 수 있었다.
결과는 예상대로 깨진 문자열이 나온다.
이는 unpacking시 문제가 됐을 가능성이 있으므로 unpacking 되지 않은 파일의 POPAD 명령어 부분을 확인해보았다.
POPAD 이후 스택에 적재되는 세 개의 값을 확인할 수 있었다.
OEP로 점프하는 구간에 BP를 걸고 실행시켰더니
MessageBoxA 함수 호출에 필요한 인자들이 스택에 PUSH 됨을 알 수 있고,
이를 통해 PUSH 되는 인자들이 StolenByte 임을 확인했다.
Unpacking 했던 실행 파일에서 Ctrl+E를 통해 코드 수정을 하였다.
부족한 인자를 완성 시키고 실행시켰더니 그림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 |