[그림 1] 문제
[그림 2] 10.exe

10.exe는 Name에 알맞는 Serial을 적는 실행파일이다.

[그림 3] PEiD로 분석

OEP 관련 문제들은 패킹과 연관이 되어있을 가능성이 높기 때문에 PEiD에 10.exe를 올려보니 Aspack으로 패킹되어있는 것을 알 수 있다.  

Aspack은 UPX와 비슷하게 처음에 PUSHAD를 통해 레지스터의 값을 넣고 디코딩 한 후 POPAD를 한다고 한다.

 

UPX로 패킹되어 있는 실행파일의 OEP 구하는 방법은 아래 글 참고!

https://these-dayss.tistory.com/53?category=957855

 

 

[그림 4] 처음 실행코드

처음에 예상대로 PUSHAD 명령어가 있다. 

 

[그림 5] Hardware BP

PUSH 명령어 실행 후 스택에 Break Point를 건다.

 

 

[그림 6] [F9] 실행

BreakPoint를 건 곳까지 실행하면 [그림 6]과 같이 POPAD 후, JNZ 구문에 의해 분기가 일어난 후 특정주소(00445834)를 PUSH 하는것을 알 수 있다. 이 주소가 바로 OEP 주소라고 할 수 있다.

 

 

[그림 7] 00445834로 이동

OEP 주소로 이동해보니 디버거가 OPCODE를 제대로 인식하지 못하고 있다. 이런 경우, 덤프를 해줘야한다고 한다.

 

 

[그림 8] OllyDump

OllyDump 툴을 사용하여 OEP를 수정한 후 덤프를 떠준다.

 

(Immunity Debugger는 따로 덤프 툴이 없어서 OllyDBG로 변경)

 

[그림 9] 덤프 뜬 실행 파일
[그림 10] text string 으로 찾은 well done 문자열
[그림 11] well done으로 가는 분기문

해당 주소를 찾아가보면 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

+ Recent posts