Pyinstaller反编译

Positron 于 2022-08-05 发布

用Pyinstaller实现python程序打包

pyinstaller -F(生成文件) -D(生成文件夹) ***.py -w(是否显示cmd黑框框) -i(图标) ***.ico

之后程序会生成一堆文件,在dist文件夹中可报找到与源文件同名的***.exe

反编译过程

工具:pyinstxtractor.py,uncompyle6(好像不支持太高的版本?)

pyinstxtractor的github页面下载pyinstxtractor.py后,用instxtractor.py ***.exe实现解包,会生成一个文件夹,在文件夹中找到一个无扩展名的[原文件名]文件和struct文件。

打开struct[原文件名]文件(十六进制),将struct的前16个字符复制到[原文件名]开头(pyinstxtractor的一个小问题,缺了一点)。

若原程序有import的模块,可在同目录下的PYZ-00.pyz_extracted文件夹中找到***.pyc,用struct的前16个字符代替***.pyc的前12个字符(麻烦)。

获得所需的.pyc后,用pip install uncompyle6安装,安装后找到%python_home%\Lib\site-packages\xdis\magics.py,搜索add_canonic_versions函数(适配版本),找一下有没有当前Python版本,没有的话加上。

uncompyle6 -o out.py source.pyc格式完成.pyc的反编译。

这里学的。

End.