pyinstaller打包的.exe文件反編譯成.py文件


原文地址:http://pluie.top/2020/09/03/pyinstaller打包的-exe文件反匯編成-py文件/

0x00 工具

pyinstxtractor

uncompyle6 安裝命令如下:

pip install uncompyle6 

0x01 前言

在做ctf逆向題目時有時會遇到python寫的.exe程序,如果能夠將.exe反編譯成python源碼,就能更快解題。python打包exe文件有使用py2exe,pyinstaller,cx_Freeze,nuitka等方式,其中pyinstaller是最常用的方法。

0x02判斷是否為pyinstaller打包的exe文件

IDA中打開字符串窗口,看到有一大堆Py_開頭的字符串,可以判斷是python寫的程序

image-20200903215009571

接着再CTRL + F搜索 pyinstaller,如果搜索的到,就可以確定是pyinstaller打包

image-20200903215135862

0x03 .exe轉.pyc

首先利用pyinstxtractor腳本將.exe文件轉為.pyc文件,指令格式為

python pyinstxtractor.py  exe文件名稱

image-20200903215811896

需要注意的是,如果你的本機python版本與寫exe的python版本不同的話可能會失敗。

最后一行顯示,你可以反編譯.pyc文件。

所以,我們就到生成的目錄下找到.pyc文件。

注意:有時候會找不到pyc文件,這是因為生成的文件少了pyc文件頭,所以我們要找到少了pyc文件頭的文件。一般情況下,該文件在名稱和exe名稱相同的.manifest文件上面。如果不是,可以把沒有后綴名的文件都試一試。

image-20200903222549282

0x04 添加pyc文件頭

找到目錄下名為struct的文件,用二進制編輯器打開,文件的前16個字節便是少掉的pyc文件頭,將其添加到pyc文件偏移量為零的位置。

image-20200905001616558

注意,如果目錄下本來就有.pyc文件也需要添加pyc文件頭。

0x05 .pyc轉.py

命令:

uncompyle6 -o 生成文件.py 目標文件.pyc

注意將pyc文件名改為XXX.pyc,否則會發生錯誤。

image-20200905002611490

0x06 總結

可能出現的問題:

  1. .exe轉.pyc失敗,可能原因是pyinstaller打包時的python版本與你的python版本不同。
  2. .pyc文件反編譯失敗,可能原因是pyc文件頭沒有正確添加。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM