当前位置: 首页 > ai >正文

Pyinstaller编译EXE及反编译

文章目录

  • 适用范围
  • 示例文件
  • 编译EXE
  • 反编译EXE
    • 准备工具
    • 编译pycdc
    • 反编译
  • 反编译得到的文件
  • 相关资源下载

适用范围

实测 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 pyinstallerpyinstaller -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, QtGuiclass 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__ = Noneif __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程序
http://www.xdnf.cn/news/4721.html

相关文章:

  • 在Postman中高效生成测试接口:从API文档到可执行测试的完整指南
  • Linux下的c/c++开发之操作Sqlite3数据库
  • SpringBoot3 + Druid + DynamicDataSource + PgSQL 连接池优化方案
  • Matlab 镍氢电池模型
  • 流批了,低调使用
  • 巧用python之--模仿PLC(PLC模拟器)
  • C++ STL入门:vecto容器
  • 四川安全员考试的内容包括哪些?
  • 2025年微服务架构关键知识点(一):核心原则与演进趋势
  • Web 架构之高可用基础
  • 基于FPGA的血氧和心率蓝牙监测系统设计-max30102
  • SHA系列算法
  • 秋招准备——2.跨时钟相关
  • 大疆无人机(全系列,包括mini)拉流至电脑,实现直播
  • 机器学习第一讲:机器学习本质:让机器通过数据自动寻找规律
  • SpringCloud服务拆分:Nacos服务注册中心 + LoadBalancer服务负载均衡使用
  • 使用C# ASP.NET创建一个可以由服务端推送信息至客户端的WEB应用(2)
  • 视频编解码学习六之视频采集和存储
  • Linux环境下部署MaxScale
  • 安卓基础(静态方法)
  • 企业级可观测性实现:OpenObserve云原生平台的本地化部署与远程访问解析
  • DeepSeek+即梦AI实战:图片制作教程
  • 电机的控制字和状态字各个位在各个模式下的含义
  • Maven使用教程
  • flutter利用 injectable和injectable_generator 自动get_it注册
  • 最新阿里九宫格识别模型,连线,231 协议算法
  • 【Python从入门到精通】--‘@‘符号的作用
  • 架空输电线巡检机器人轨迹优化设计
  • 探索网络设备安全:Shodan 的原理与合法应用
  • Early clock flow