Reversing

[코드엔진] basic 06

BIGFROG 2020. 1. 7. 16:45


Location : https://codeengn.com/

Author : Raz0r

Debygger : Olly Debugger (plugin :Ollydump)

Tool : PEiD v0.95


코드엔진 - basic05 문제와 매우 유사하니 간단하게 설명하도록 하겠습니다.


파일을 처음 실행 시 Serial Number를 입력받도록 되어 있습니다.

디버거를 통해 Serial Number가 무엇인지 검색하면 될 것 같습니다.

 



파일을 디버거를 통해서 처음 실행 시켰을 때의 화면입니다.

파일이 패킹되어 있음을 예상할 수 있습니다.

그래서 툴을 이용해 패킹 여부를 판단하도록 하겠습니다.





PEiD를 이용해 패킹 여부를 판단하겠습니다.

빨간색으로 강조한 부분을 보면 이 파일이 UPX로 패킹되어 있음을 알 수 있습니다.





OEP(Original Entry Point)를 찾아보도록 하겠습니다.





OEP : 00401360 임을 알 수 있습니다.





이제 OEP로 이동해서(Ctrl + G를 이용)

BreakPoint를 설정해둔 뒤 Ollydump를 이용해 덤프를 씌우는 작업을 하겠습니다.





덤프를 씌우는 과정입니다.

이후 덤프를 씌운 파일을 새로 저장합니다.




덤프를 씌운 파일을 디버거로 다시 실행시킵니다.

언패킹이 성공적으로 진행되었음을 알 수 있습니다.

코드영역 내부로 진입하기 위해서 OEP로 이동하겠습니다. (Ctrl + G 이용)

 

 



OEP로 이동한 모습입니다.

코드영역 내부로 진입했으므로, Text String 검색 기능을 이용해 Serial Number로 보이는 문자열을 찾으면 될 것 같습니다.





가장 먼저 눈에 띄는 것은 위쪽에 있는

"Good Job!" 와 "You got it ;)" 입니다.

Serial Number를 제대로 입력했을 경우 출력되는 메시지 박스인 것 같습니다.





이 문자열을 가지고 있는 코드 부분으로 이동한 화면입니다.

문자열을 입력받고, 0040107D의 JNZ(=Jump If Not Zero)를 이용해 참/거짓을 판별합니다.

이 부분이 Serial Number를 의미하는 것 같습니다.



 

 



Serial Number를 입력할 경우, 위와 같이 성공했다는 메시지가 출력됩니다.