OEP란 Original Entry Point로, 패킹된 파일의 실제 프로그램 시작 부분을 의미한다.

upx1에 있는 코드를 통해 upx0 section에 압축 해제를 하여 코드들을 생성하고 마지막에 upx0 section으로 jmp를 하는데 그 jmp하는 주소가 OEP인 것이다.

upx로 packing한 바이너리의 특징은

PUSHAD
'''
POPAD
'''
JMP OEP

이런 식의 구조이며, PUSHADPOPAD 사이에서 압축을 모두 해제한 후에 OEP로 jmp하는 것이다.

image

실제로 popa(오래된 바이너리라 그렇다) 이후에 0x1012475로 jmp하므로, 우리는 OEP가 0x1012475라는 것을 알 수 있다.

'Reversing' 카테고리의 다른 글

angr - (2) Claripy  (0) 2020.04.28
angr - (1) Introduction  (0) 2020.04.27
IDA binary patch  (0) 2020.04.23
StolenByte  (0) 2020.03.21
UPX packing & unpacking  (0) 2020.03.21

+ Recent posts