记一次对pyinstaller打包的,无加壳exe程序的反编译。之前,有位朋友写了有关学校充电费的程序,打包成了exe,现在学校充电费的网站更新了,我就想把这位朋友写的程序反编译一下,然后进行代码修改。
首先:
将朋友写的exe程序放进HXD中,发现朋友也正好是用python3.7写的程序。在HXD中,结尾部分可多次发现py3.7之类的字符。
由于我们两个的python版本都是3.7,为接下来的反编译减去了不少的麻烦。
工具
接下来的反编译需要一个脚本pyinstxtractor.py。可在如下网站中下载:
pyinstxtractor
接下来将要进行反编译的exe程序与下载下来的脚本放到同一个目录下,然后通过cmd命令:
python pyinstxtractor.py 待反编译的exe文件
如果你的python版本与待反编译的exe文件python版本一致,会出现如下画面:
然后在当前目录下,你会看到生成的一个新的文件夹,以extracted结尾的文件夹,然后进入。
开始利用HXD
进入之后找到程序命名的文件,例如你的exe名为login.exe,那么你要找的文件便是login。然后要找到struct文件。如图:
将这两个文件拖入HXD,发现struct比程序文件多了十六个字节,如图
将struct多的那十六个字节补充进login头部中,并将新产生的文件命名为pyc文件。
进行pyc反编译
将得到的pyc文件,通过uncompyle6进行反编译。
对uncompyle6进行安装
pip install uncompyle6
然后通过命令进行反编译:
uncompyle6.exe file.pyc > file.py
就可以得到py源代码文件了。
补充
若打包的python不存在自写库,那么反编译就基本结束了,若还有作者自己写的库,那么还得将作者自写的库反编译一下。在如下文件夹中,将自写库反编译出来。