Wargame/CodeEngn

[CodeEngn] Basic RCE L09

핏디 2021. 8. 11. 13:18
SMALL

[문제]


[풀이]

 

문제를 실행하면 error 메시지 출력 후 종료된다.

 

이에 IDA를 통해 UPX 패킹이 되어 있는 것을 확인할 수 있었고, unpacking을 진행한 뒤 ollydbg로 실행하였다.

 

 

6A0068002040006812204000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


[핵심]

StolenByte란?

: 훔친 바이트란 의미, 프로그램의 한부분의 코드를 훔쳐내어 다른 부분으로 옮겨진 코드

- 주로 옮겨지는 코드는 엔트리 포인트위의 몇개의 코드임

- 옮겨진 코드들은 OEP 주소로 점프하기 전에 위치에서 PUSH 됨.

-> 주로 OEP 주소의 코드를 따로 분리해서 OEP로 점프 직전에 PUSH로 넘겨주

- 패커가 이동시킨 코드의 윗부분 (보통 OEP 로부터 몇 개의 명령어)

- 프로그램을 패킹 시 확인 가능.

- 숨겨진 코드를 다시 제자리에 갖다 놓고 덤프, IAT 복구 하면 언패킹 후 정상 실행 됨

- Upx 에서는 마지막 JMP 전 POPAD이후 일정 바이트의 코드 의미

 

마지막 JMP문으 통해 원본 코드로 들어온 상태에서 0040100C번지 위로 12바이트가 NOP인 것을 볼 수 있는데, 이것이 Stolen byte임.


[출처]

https://stih.tistory.com/67

 

코드 엔진 Challenges : Basic 09

이 글은 코드엔진(http://codeengn.com/) 에서 제공하는 리버스 엔지니어링 관련 다양한 문제들을 풀어보면서 리버스 엔지니어링을 공부하는 목적으로 작성되었습니다. 이글을 작성하는 필자도 리

stih.tistory.com

 


 

LIST

'Wargame > CodeEngn' 카테고리의 다른 글

[CodeEngn] Basic RCE L08  (0) 2021.08.04
[CodeEngn] Basic RCE L07  (0) 2021.07.30
[CodeEngn] Basic RCE L05  (0) 2021.07.29
[CodeEngn] Basic RCE L04  (0) 2021.07.22
[CodeEngn] Basic RCE L03  (0) 2021.07.22