目录
1 uncompyle6
pip install uncompyle6
uncompyle6 -o 生成的文件名.py 想反编译的文件名.pyc
源码地址(rocky/python-uncompyle6:跨版本的Python字节码反编译器 (github.com))
2 decompyle3
pip install decompyle3
decompyle3 -o 生成的文件名.py 想反编译的文件名.pyc
uncompyle6和decompyle3是同一个作者,decompyle3是uncompyle6的一个分支,更轻量级,更好的支持python3.7、python3.8。
uncompyle6支持更早版本的python3。由于作者精力问题都不再维护了,这两个命令是最方便使用的python反编译方法,可以直接通过pip下载并使用
3 pycdc
源码地址(zrax/pycdc: C++ python bytecode disassembler and decompiler (github.com))
我编译好的exe(https://download.csdn.net/download/weixin_44382736/87698967?spm=1001.2014.3001.5501)
3.1 windows使用
参考(https://blog.csdn.net/qq_63585949/article/details/127080253)
(1)下载源码
git clone https://github.com/zrax/pycdc.git
(2)程序的编译需要用到CMake,
CMake的安装教程(CMake 安装教程_cmake下载安装教程_小嗷犬的博客-CSDN博客
)
(3)或者使用vscode的CMake扩展,个人推荐这种方法,比较傻瓜式
下载CMake扩展
(4)CMake安装pycdc
(5)然后可以在build/debug下找到pycdas.exe和pycdc.exe,pycdas是反汇编工具,这里使用pycdc就好
(6)将pycdc移动到待反编译的文件同级目录下pycdc.exe 文件名.pyc
然后就可将反编译后的代码复制到.py文件里了
3.2 linux使用
(1)建议将gcc升级到最新版本,centos系统建议手动安装gcc,yum install的gcc版本太低,参考(Linux升级gcc到最新版本gcc-11.2.0_Dan淡淡的心的博客-CSDN博客)
版本过低在第(2)步make时可能会报如下错
Linux make error · Issue #229 · zrax/pycdc (github.com)
(2)安装好gcc后在下载目录下输入 cmake CMakeLists.txt,会在当前目录下生成 Makefile 文件然后输入 make 即可进行编译安装
由于我的磁盘不足清起来又很麻烦,在(1)卡住了,
还是推荐3.1的方法使用windows的vscode编译
pycdc功能要更强大一点,目前支持到python3.11且还在更新,不过实测下来,uncompyle6和decompyle3可以反编译汉字,pycdc反编译后汉字会成乱码,建议两种工具结合使用,
另外python2.7还可以参考(wibiti/uncompyle2: Python 2.7 decompiler (github.com))
python3.3还可以参考(figment/unpyc3: Decompiler for Python 3.3 (forked from https://code.google.com/p/unpyc3) (github.com))
2.7、3.3版本在现在不主流,所以不再介绍了。
建议上述工具都试一试,某一种工具可能出现只能反编译一部分代码的情况,有可能某一部分所有工具都不能成功反编译,但对比源码全部丢失已经好太多了