适用范围
实测 python3.9可以反编译。从pycdc源代码看,似乎支持到python 3.13。
示例文件
demo.py
import sys
from PyQt5 import QtWidgets, QtCore, QtGui
class QWidget(QtWidgets.QWidget):
def __init__(self, parent=None):
super(QWidget, self).__init__(parent)
self.init_ui()
def init_ui(self):
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('Demo')
layout = QtWidgets.QVBoxLayout(self)
self.label = QtWidgets.QLabel('Hello World', self)
layout.addWidget(self.label)
self.show()
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = QWidget()
sys.exit(app.exec_())
编译EXE
pip install pyinstaller
pyinstaller -F demo.py
在 dist
目录下得到 demo.exe
反编译EXE
准备工具
w64devkit-x64-2.0.0.exe
,从 https://github.com/skeeto/w64devkit 或镜像站下载cmake-3.31.5-windows-x86_64.msiC
,从 https://cmake.org/download/ 下载Git-2.45.2-64-bit.exe
,从 https://git-scm.com/downloads/win 下载- pycdc源码, 从 https://github.com/zrax/pycdc 下载
- pyinstxtractor.py源码,从https://github.com/extremecoders-re/pyinstxtractor 下载
安装上面的三个EXE
编译pycdc
启动w64devkit.exe
,进入 pycdc
目录
cmake . -G "MinGW Makefiles"
cmake --build . --config Release
pycdc
目录下得到 pycdc.exe
反编译
可以用任意版本的python,建议用与打包环境用相同python版本
python pyinstxtractor.py demo.exe
同目录下得到demo.exe_extracted
找到 demo.pyc
, pycdc.exe
解析 pyc文件,反编译为 py文件
pycdc.exe -o demo.py demo.pyc
反编译得到的文件
# Source Generated with Decompyle++
# File: demo2.pyc (Python 3.9)
import sys
from PyQt5 import QtWidgets, QtCore, QtGui
class QWidget(QtWidgets.QWidget):
def __init__(self = None, parent = None):
super(QWidget, self).__init__(parent)
self.init_ui()
def init_ui(self):
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('Demo')
layout = QtWidgets.QVBoxLayout(self)
self.label = QtWidgets.QLabel('Hello World', self)
layout.addWidget(self.label)
self.show()
__classcell__ = None
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = QWidget()
sys.exit(app.exec_())
相关资源下载
通过网盘分享的文件:python_compile_decompile
链接: https://pan.baidu.com/s/1Qf4KUFmqFWzf7WbOTx6xVA?pwd=bf25 提取码: bf25
- cmake-3.31.5-windows-x86_64.msi
- Git-2.45.2-64-bit.exe
- w64devkit-x64-2.1.0.exe
- pycdc-master.zip [ 2025.05.08从github下载]
- pyinstxtractor-master.zip [2025.05.08从github下载]
- pycdc.exe 根据以上方法,编译出来的 pycdc程序