codeengn) basic 8
Reversing/CodeEngn
2014. 10. 20. 18:50
codeengn의 basic 8 번 문제는 OEP를 찾는 문제 입니다.
OEP란 original Entry point 의 약어로 실제 시작 지점을 이야기 합니다.
8번 문제는 upx로 패킹되어 있습니다.
upx는 popad로 이전 레지스터를 모두 push한 뒤에 디코딩 루프를 지나고 나서 popad를 한뒤에 밑에있는 JMP문으로 original entry point 로 감니다.
두가지 방법이 있습니다.
천천히 f8이나 f7를 누르면서 popad가 나올떄까지 디코딩을 하는 방법과
하드웨어에 bp를 걸어서 OEP로 가는 방법입니다.
하드웨어에 BP를 걸어서 OEP로 가보겟습니다.
올리디 버거로 열어 보겟습니다.
이렇게 나오지 않는다면 올리디버거에서 ep를 찾지 못한는 것이므로
peview로 열어서 ep로 가주시면 됨니다.
여기서 f8를 한번만 누룹니다.
표시된 부분에 BP를 걸어야 합니다.
따라서 GOTO로 0006ffa4주소로 가야 합니다.
ctrl + g 로 메세지 창을 뛰울수 있습니다.
0006ffa4로 이동합니다.
주소 부분에서 정확히 0006ffa4를 클릭한뒤에 오른쪽클릭후에 breakpoint -> hardware, on access -> Byte로 BP를 걸어 줌니다.
그리고 F9으로 실행을 하면 정확히 POPAD밑에서 멈추게 됨니다.
JMP문으로 OEP으로 가게됨으로 JMP문에서 enter 로 follow 하시면
01012475 으로 가게됨니다.
01012475가 OEP입니다.
인증 해보겟습니다.
'Reversing > CodeEngn' 카테고리의 다른 글
codeengn) basic 09 (0) | 2014.11.16 |
---|---|
codeengn) basic 06 (0) | 2014.11.16 |
codeengn) basic 4 (0) | 2014.10.17 |
codeengn)basic 2 (0) | 2014.10.17 |
codeengn)basic 1 (1) | 2014.10.16 |