일상/꿀팁

파이썬 EXE 실행파일 디컴파일 초간단 방법

온유향 2024. 9. 22. 21:04
728x90
반응형

1. EXE 실행파일 압축 해제

먼저 pyinstaller로 패킹된 exe 파일을 압축해제 합니다. 언패킹을 수행하는 유사한 프로그램들이 많이 있지만 아래의 프로그램을 강력하게 추천하는 이유는 매직넘버 복구라는 번거로운 작업을 언패킹과 동시에 자동으로 수행해주기 때문입니다.

https://github.com/extremecoders-re/pyinstxtractor

 

GitHub - extremecoders-re/pyinstxtractor: PyInstaller Extractor

PyInstaller Extractor. Contribute to extremecoders-re/pyinstxtractor development by creating an account on GitHub.

github.com

github 다운로드

 

설명의 편의를 위해서 c:\decompile 이라는 폴더를 생성하고 pyinstxtractor.py를 압축 해제하여 복사합니다. 그리고 디컴파일을 수행하고자 하는 실행파일(main.exe)도 복사합니다.

압축해제

작업 폴더

명령 프로프트상에서 pyinstxtractor.py를 이용해서 exe 파일을 언패킹 합니다.

Unpack exe

기존의 방식에서는 언패킹시 파일이 확장자 없는 형태의 'main' 과 같은 형식이었고, 매직넘버 Magic Number가 제거된 상태로 파일을 복구해야 하지만, 이 포스팅에서 사용한 언패킹툴 pyinstxtractor은 자동으로 파일 확장자 및 매직넘버 Magic Number를 복구해 주기 때문에 바로 디컴파일을 수행하시면 됩니다. ^^

언팩과 동시에 복원된 파일

2. 디컴파일

디컴파일도 훨씬 효율적인 방식으로 진행하고자 합니다. decompyle3, uncompyle6 같은 기존 모듈을 임포트하고 실행하는 방식에서 실행파일로 컴파일된 프로그램 pycdc.exe 파일을 이용해서 디컴파일을 수행하도록 하겠습니다. 이 프로그램은 https://github.com/zrax/pycdc 프로젝트를 어느 개발자가 실행파일로 만든것입니다.

 

 

 

이제 main.pyc 파일과 pycdc.exe 프로그램을 decompile 폴더에 복사한 후 아래와 같이 디컴파일 명령어를 실행합니다.

정상적으로 수행되었다면 지정한 이름의 결과 파일인 main_decompile.py 파일이 생성됩니다.

디컴파일 결과파일

결과물을 확인해보면 아래와 같이 복원된 소스코드를 확인할 수 있습니다. 하지만 소스코드는 개발자가 읽을 수 없도록 난독화(Obfuscation)가 있음을 알 수 있습니다. 그 이유는 이전 포스팅에서 pyinstaller로 패킹하기 전 소스코드를 난독화 하였기 때문입니다. ^^

디컴파일 된 모습

728x90
반응형