10.exe는 Name에 알맞는 Serial을 적는 실행파일이다.
OEP 관련 문제들은 패킹과 연관이 되어있을 가능성이 높기 때문에 PEiD에 10.exe를 올려보니 Aspack으로 패킹되어있는 것을 알 수 있다.
Aspack은 UPX와 비슷하게 처음에 PUSHAD를 통해 레지스터의 값을 넣고 디코딩 한 후 POPAD를 한다고 한다.
UPX로 패킹되어 있는 실행파일의 OEP 구하는 방법은 아래 글 참고!
https://these-dayss.tistory.com/53?category=957855
처음에 예상대로 PUSHAD 명령어가 있다.
PUSH 명령어 실행 후 스택에 Break Point를 건다.
BreakPoint를 건 곳까지 실행하면 [그림 6]과 같이 POPAD 후, JNZ 구문에 의해 분기가 일어난 후 특정주소(00445834)를 PUSH 하는것을 알 수 있다. 이 주소가 바로 OEP 주소라고 할 수 있다.
OEP 주소로 이동해보니 디버거가 OPCODE를 제대로 인식하지 못하고 있다. 이런 경우, 덤프를 해줘야한다고 한다.
OllyDump 툴을 사용하여 OEP를 수정한 후 덤프를 떠준다.
(Immunity Debugger는 따로 덤프 툴이 없어서 OllyDBG로 변경)
해당 주소를 찾아가보면 OPCODE는 75 55 임을 확인할 수 있다.
'Study > Reversing' 카테고리의 다른 글
[HackCTF] Reversing Me 풀이 (0) | 2021.05.11 |
---|---|
CodeEngn Challenge : Basic RCE L11 (0) | 2021.05.06 |
CodeEngn Challenge : Advance RCE L09 (0) | 2021.04.28 |
CodeEngn Challenge : Advance RCE L03 (0) | 2021.04.28 |
CodeEngn Challenge : Basic RCE L09 (0) | 2021.04.07 |