공개용 Writeup PE Password

2018. 6. 6. 01:240x02 Reverse Engineer/0x02. Reversing.kr

728x90


문제의도


PE PASSWORD Protector에 대해 이해를 하고 있는가?


패커가 언패킹이 되는 과정을 이해하고 있는가? 


바이너리 열고 인증까지 소요시간 

2017.12.01 ~ 2018.06.06 


풀고 난 후 .. 

패커를 직접 만들어 테스트를 해보고 싶어 졌다.


어셈블리어 코딩이 더 재밌어졌다. 


보이는 것만 쫓아가다가는 때로는 진전이 없다. 


풀기 위해 공부 한 것


PE Password Protector


Simple Writeup 

Original과 Packed의 EntryPoint가 왜 달라져있는지를 생각해보아야 한다. 


문제에서 패스워드를 입력하는 Dialog가 있다고 무조건 맹신하지 말자. 


breakpoint를 걸지 않고 Trace하면 Win32API의 특성에 의해  Message 큐 루틴을 벗어날 수 없다.


적절하게 코드 패치를 해주어야 한다. 


401000~3의 데이터에서 401004~7까지 Original 바이너리와 일치하기 위해서는 "어떠한 레지스터 하나"를 유심히 보고 코드를 작성해야 한다. 


코드를 올바르게 작성한다면, 그 레지스터에 만족하는 값은 2개가 출력 된다. 


그 값과 EAX 값을 이용하면 언패킹이 가능하다. 




패스워드 입력 하는 부분 




얻을 수 있는 EBX 2개 


중요 루틴 



플래그


앞으로 4개 남았다. 힘내자.



'0x02 Reverse Engineer > 0x02. Reversing.kr' 카테고리의 다른 글

Simple VM solve 공개용  (0) 2018.12.24
PEPassword  (0) 2018.06.06
공개용 CSharp Writeup  (0) 2018.06.04
CSharp  (0) 2018.06.04
SimpleVM 풀기 전 공부 1  (1) 2018.06.01