2017. 8. 20. 09:18ㆍ0x02 Reverse Engineer/0x01. CodeEngn
문제 : After finding the OEP, FIND the OPCODE of the branch instruction going to the "goodboy routine" The solution shoule be in this format : OEP+OPCODE
바이너리 실행:
|
[그림 1] 네임과 시리얼 값을 찾아내야 하는 바이너리 |
|
[그림 2] Aspack |
ASPACK은 esp의 주소에 hardware bp를 걸면 된다. 그 후 JNZ를 만나게 되는데 점프를 진행하게 되면 DB 어쩌고 막 되어있는게 있는데 이게 분석되어 지지 않은 바이너리라는 의미.
이것을 Analysis를 이용해서 풀어주면 push ebp의 주소가 oep가 되는 기막힌 언패킹.
OEP : 00445834
주의깊게 봐야할 문구
00445472 B8 2C564400 mov eax,10.0044562C ; ASCII "Name must be at least 5 characters long!"
0044550C BA 60564400 mov edx,10.00445660 ; ASCII "Registered ... well done!"
우선 적어도 5글자가 되어야 한다는 것...
근데 왜 Name이 적히지도 않니... 그냥 opcode만 찾고 끝내야 하나.
그냥 실행해도 입력이 되지 않는다.
일단 그냥 opcode만 찾자.
등록 성공이란 출력문이 뜨기 위한 주소는
004454D4 /75 55 jnz short 10.0044552B
00445834 75 55
'0x02 Reverse Engineer > 0x01. CodeEngn' 카테고리의 다른 글
[CodeEngn Basic 12] Can you replace? (0) | 2017.08.20 |
---|---|
[CodeEngn Basic 11] Do you know StolenBytes? (0) | 2017.08.20 |
[CodeEngn Basic 9] Do you know StolenBytes? (0) | 2017.08.20 |
[CodeEngn Basic 8] Do you know OEP feat. UPX (0) | 2017.08.20 |
[CodeEngn Basic 7] WHAT ABOUT THE CHANGE BY 'CodeEngn' (0) | 2017.08.20 |