UPX 로 패킹된 파일을 OllyDBG 를 이용하여 언패킹하는 과정에 대하여 알아 보겠습니다.

언패킹을 하기 전 필요한 툴 들이 있습니다.
- OllyDBG, OllyDump, LordPE, PEID

OllyDump의 경우는 플러그인으로 설치하시면 됩니다.

우선 언패킹을 하기 위해서는 해당 파일이 어떤 종류로 패킹이 되었는지 확인 할 필요가 있겠죠.. PEID 툴을 이용하여 확인 해 봅니다. 타겟 파일을 선택하니 UPX로 압축이 되었다고 나오네요..





그럼 타겟 파일을 OllyDBG로 불러옵니다. UPX 방식은 맨 마지막에 OEP (Original Entry Point)로 갈 수 있도록 표시를 해놓기 때문에 프로그램 코드 맨 밑에서 부터 훑어보면 JMP 명령어를 찾을 수 있으며 점프 명령어가 가리키는 곳이 OEP 입니다. 실제 프로그램에 진입하는 지점이라고 보시면 됩니다.





다음으로 JMP 명령어에 F2를 눌러 BP(Brack Point)를 걸어 두고
F9를 누르면 BP를 걸어 둔 곳에서 멈추게 됩니다.





여기에서 F8을 눌러 한 단계 진행해봅니다. 새로운 코드들이 보이시죠? 이 부분이 바로 OEP입니다.





이제 이 부분을 덤프를 뜨면 됩니다. 해당 코드에서 마우스 우측 클릭하여
[Dump debugged process]를 클릭 한 후 파일로 저장합니다.





이 때 [Rebuild Import] 부분은 체크 해제한 후 Dump 버튼을 클릭하여 새로운 이름으로 저장합니다.





저장 된 파일을 실행 시켜보면 에러가 나는데 LordPE 툴을 이용하여 오류난 파일을 복구 해 주기만 하면 됩니다.







정상적으로 언패킹이 되었는지 PEID 툴을 이용하여 확인 해 보니 Borland Delphi로 만들어졌네요..






저는 주로 툴 을 이용하여 언패킹을 하지만 잊어버리지 않기 위해서 가끔씩 수동으로 해보기도 합니다. 이 놈의 뇌구조가 오래 저장하지 못해서이기도 하구요 ㅋㅋ