python3反编译,pyc文件反编译为py

目录

1 uncompyle6

2 decompyle3

3 pycdc

3.1 windows使用

3.2 linux使用


1 uncompyle6

pip install uncompyle6
uncompyle6 -o 生成的文件名.py 想反编译的文件名.pyc

源码地址(rocky/python-uncompyle6:跨版本的Python字节码反编译器 (github.com))

2 decompyle3

pip install decompyle3
decompyle3 -o 生成的文件名.py 想反编译的文件名.pyc

源码地址(rocky/python-decompile3: Python decompiler for 3.7-3.8 Stripped down from uncompyle6 so we can refactor and start to fix up some long-standing problems (github.com))

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扩展

python3反编译,pyc文件反编译为py_第1张图片

(4)CMake安装pycdc

python3反编译,pyc文件反编译为py_第2张图片

python3反编译,pyc文件反编译为py_第3张图片

python3反编译,pyc文件反编译为py_第4张图片

(5)然后可以在build/debug下找到pycdas.exe和pycdc.exe,pycdas是反汇编工具,这里使用pycdc就好

python3反编译,pyc文件反编译为py_第5张图片

(6)将pycdc移动到待反编译的文件同级目录下pycdc.exe 文件名.pyc

python3反编译,pyc文件反编译为py_第6张图片

然后就可将反编译后的代码复制到.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)

python3反编译,pyc文件反编译为py_第7张图片

(2)安装好gcc后在下载目录下输入 cmake CMakeLists.txt,会在当前目录下生成 Makefile 文件然后输入 make 即可进行编译安装

由于我的磁盘不足清起来又很麻烦,在(1)卡住了,

python3反编译,pyc文件反编译为py_第8张图片

还是推荐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版本在现在不主流,所以不再介绍了。

建议上述工具都试一试,某一种工具可能出现只能反编译一部分代码的情况,有可能某一部分所有工具都不能成功反编译,但对比源码全部丢失已经好太多了

你可能感兴趣的:(linux,运维,服务器)