OEP란 Original Entry Point로, 패킹된 파일의 실제 프로그램 시작 부분을 의미한다.
upx1에 있는 코드를 통해 upx0 section에 압축 해제를 하여 코드들을 생성하고 마지막에 upx0 section으로 jmp를 하는데 그 jmp하는 주소가 OEP인 것이다.
upx로 packing한 바이너리의 특징은
PUSHAD
'''
POPAD
'''
JMP OEP
이런 식의 구조이며, PUSHAD
와 POPAD
사이에서 압축을 모두 해제한 후에 OEP로 jmp하는 것이다.
실제로 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 |