constWORLDant

[CodeEngn Basic 10] Do you know ASPACK? 본문

0x02 Reverse Engineer/0x01. CodeEngn

[CodeEngn Basic 10] Do you know ASPACK?

data type ConS_tanT 2017.08.20 09:18

문제 : 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

0 Comments