PyInstaller打包exe的攻防实战:从一键提取到源码加固 1. PyInstaller打包exe的基本原理PyInstaller是一个常用的Python打包工具它能够将Python脚本转换成独立的可执行文件。它的工作原理可以概括为以下几个步骤分析依赖PyInstaller会分析你的Python脚本找出所有依赖的模块和库。收集资源将Python解释器、依赖的库文件以及你的脚本打包到一个临时目录中。生成可执行文件将这些文件打包成一个可执行文件exe并在运行时解压到临时目录执行。PyInstaller支持两种打包方式单文件模式-F参数所有内容打包成一个exe文件运行时解压到临时目录。文件夹模式默认生成一个包含所有依赖文件的文件夹。例如以下命令会将脚本打包成单文件exepyinstaller -Fw --iconapp.ico my_script.py2. 反编译PyInstaller打包的exe2.1 提取pyc文件PyInstaller打包的exe实际上是一个自解压的压缩包其中包含了Python字节码文件pyc。要反编译exe首先需要从中提取出pyc文件。常用的工具有两种pyinstxtractor.py这是一个Python脚本可以直接从exe中提取出所有文件。使用方法如下python pyinstxtractor.py my_app.exe执行后会生成一个my_app.exe_extracted文件夹里面包含了exe中的所有文件包括pyc文件。pyi-archive-viewer这是PyInstaller自带的工具可以查看和提取exe中的文件pyi-archive-viewer my_app.exe在交互界面中使用x 文件名命令可以提取指定文件。2.2 修复pyc文件头从PyInstaller提取的pyc文件通常缺少文件头magic number和时间戳导致无法直接反编译。修复步骤如下使用十六进制编辑器如010 Editor或HxD打开提取的pyc文件。从正常的pyc文件中复制前16个字节magic number和时间戳粘贴到提取的pyc文件开头。保存文件后即可用反编译工具处理。2.3 反编译pyc文件修复后的pyc文件可以用以下工具反编译为Python源代码uncompyle6安装pip install uncompyle6使用uncompyle6 my_script.pyc my_script.py在线工具例如https://tool.lu/pyc/https://python-decompiler.com/3. 批量反编译exe中的Python脚本如果exe中包含多个pyc文件如主脚本和依赖库可以编写脚本批量处理。以下是一个示例脚本import os import pyinstxtractor from uncompyle6.bin import uncompile def extract_and_decompile(exe_path): # 提取exe文件 sys.argv [pyinstxtractor, exe_path] pyinstxtractor.main() # 修复并反编译pyc文件 extracted_dir os.path.basename(exe_path) _extracted for root, _, files in os.walk(extracted_dir): for file in files: if file.endswith(.pyc): pyc_path os.path.join(root, file) # 修复文件头略 # 反编译 output_path pyc_path[:-4] .py os.system(funcompyle6 {pyc_path} {output_path})4. 防止PyInstaller打包的exe被反编译4.1 使用--key参数加密PyInstaller支持通过--key参数对打包的代码进行加密pyinstaller -F --keymy_password my_script.py加密后的pyc文件会被转换为.pyc.encrypted格式无法直接反编译。注意需要安装tinyaes库pip install tinyaes4.2 代码混淆除了加密还可以对Python代码进行混淆增加反编译后的阅读难度。常用工具包括PyArmor对代码进行混淆和加密。Oxyry Python Obfuscator在线混淆工具。4.3 使用Cython编译将关键代码用Cython编译成二进制文件.pyd或.so可以显著增加反编译难度安装Cythonpip install cython编写setup.pyfrom distutils.core import setup from Cython.Build import cythonize setup(ext_modulescythonize(critical_code.py))编译python setup.py build_ext --inplace5. 实际攻防案例5.1 攻击案例反编译未加密的exe假设有一个未加密的exe文件使用pyinstxtractor.py提取出pyc文件。修复pyc文件头。用uncompyle6反编译轻松获得源代码。5.2 防御案例加密后的exe分析如果exe使用了--key加密提取出的依赖库pyc文件会变成.pyc.encrypted格式。没有密钥的情况下无法直接反编译。攻击者需要分析PyInstaller的加密机制或破解密钥难度大幅增加。6. 总结与建议对开发者的建议使用--key参数加密关键代码。对核心逻辑使用Cython编译。考虑代码混淆增加逆向难度。对安全研究员的建议熟悉PyInstaller的文件结构。掌握pyc文件修复技术。了解常见加密方式如AES的解密方法。在实际项目中没有绝对的安全但通过合理的技术组合可以显著提高攻击者的成本。根据你的需求选择适合的保护级别即可。

相关新闻

最新新闻

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现 【免费下载链接】serenity The Serenity Operating System 🐞 项目地址: https://gitcode.com/GitHub_Trending/se/serenity 导读 本文以 getopt(3) 手册 为核心&a…

2026/9/23 4:54:42
轻量服务器还是ECS?大促云服务器选购与避坑实战指南

轻量服务器还是ECS?大促云服务器选购与避坑实战指南

每年大促节点,群里永远有人在问同一个问题:“38元的轻量服务器到底怎么抢?为什么我每次点进去都是已售罄?68元直购和99元的ECS我到底选哪个?”作为一个常年帮团队和自己采购云服务器的老用户,我太清楚这种纠…

2026/9/24 14:25:52
为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南 【免费下载链接】agents Multi-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity 项目地址:…

2026/9/24 14:49:33
PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署 【免费下载链接】PaddleOCR Turn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between i…

2026/9/23 8:01:38
Spring源码解析:构造器注入的类型转换与候选匹配机制

Spring源码解析:构造器注入的类型转换与候选匹配机制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 14:28:18
openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由 【免费下载链接】openai-agents-python A lightweight, powerful framework for multi-agent workflows 项目地址: https://gitcode.com/GitHub_Trending/op/openai-agents-pyth…

2026/9/24 11:09:24

日新闻

周新闻