PRODRAMMER

프로그램 출처 : http://codeengn.com/


위 사이트 Challenges -> Start에서 해당 레벨의 파일을 다운받습니다.


Chrome은 위험 사이트로 인지해서 다운사이트를 막아버리더군요..

저는 Explorer로 다운받았습니다.



파일을 다운받습니다. 


다운받는 곳에 가면 수행과제가 적혀있습니다.


Korean : Unpack을 한 후 Serial을 찾으시오. 정답인증은 OEP + Serial
Ex) 00400000PASSWORD 
 

English : Unpack, and find the serial. The solution should be in this format : OEP + Serial

Ex) 00400000PASSWORD 


우선 Unpack을 하라고 하니...패킹 상태를 확인하기위해 PEiD파일로 확인해봅시다.


↓ Download ↓

http://www.softpedia.com/get/Programming/Packers-Crypters-Protectors/PEiD-updated.shtml


 


 


UPX로 패킹된 것을 확인할 수 있습니다.


그럼 UPX 프로그램으로 Unpacking을 할 수도 있지만,


저희는 ollydbg로 unpack을 진행하겠습니다.



올리디버거로 실행하면 다이얼로그 박스가 나옵니다


Title에 나와있듯이 압축된 코드인 것을 인지한 듯 싶네요


아무 키나 눌러도 상관없습니다ㅎㅎ



PUSHAD라는 코드로 소스가 시작됩니다.


이 부분은 압축을 해제하는 부분입니다. 


F8키를 눌러 코드 진행을 해보면 같은 구간을 반복하면서 

압축을 해제하는 모습을 확인할 수 있습니다.


압축이 되어있는 상태에서는 프로그램의 실제코드에 접근할 수 없기 때문에

Unpacking을 통해 실제 코드를 구해야합니다.


PUSHAD에서 스크롤바를 밑으로 쭉 내리면



POPAD를 만나실 수 있습니다.(생각보다 많이 내리셔야해요)


POPAD까지 오면 프로그램 압축을 해제한 상태입니다.


(A429A3B ~ A4289A45까지는 의미없는 반복문 같습니다)


JUMP문으로 이동하는 곳 부터 실제 프로그램의 시작입니다.


http://www.openrce.org/downloads/details/108/OllyDump





위 사이트에서 ollydump 플러그인을 받아 Plugin에 추가해주세요.

 


JUMP문으로 이동한 이 곳이 OEP(Original Entry Point)입니다


그러면 마우스 우클릭을 하면 "Dump debugged process"가 있습니다.



위와 같은 세팅으로 Dump시켜주세요.



압축을 해제했기 때문에 용량이 증가했습니다.


그럼 unpacking한 프로그램을 디버거로 분석하면 되겠습니다!


먼저 프로그램을 실행해보겠습니다.



ABCDE라고 입력을 하니 틀린 시리얼이라고 하네요ㅎㅎ


여기서 "Wrong serial!!!"이라는 문자열이 메시지 박스로 나온다는 것을 알았습니다.



올리디버거로 


Unpacking한 프로그램을 열고 

마우스 우클릭 → Search for → All intermodular calls



MessageBox 모듈이 보이네요


더블클릭해보면



익숙한 문장들이 보이네요.


아까 입력한 "ABCDE"와 "Wrong serial!!!"


여기서 "ABCDE"와 나란히 있는 값이 의심스럽네요.



그럼 최종 답은 뭘까요~?








 





'WarGame > CodeEngn.com' 카테고리의 다른 글

[CodeEngn Basic] Level.12  (0) 2016.08.05
[CodeEngn Basic] Level.08  (0) 2016.08.05
[CodeEngn Basic] Level.07 (abex' 5th crackme)  (0) 2016.08.05
[CodeEngn Basic] Level.04  (0) 2016.08.05
[CodeEngn Basic] Level.01  (0) 2016.08.05