PyArmor 一键加密

使用:

pyarmor obfuscate main.py

参考:Python代码加密方案_python加密代码_wgr_1009的博客-CSDN博客

中文文档:1. 使用教程 — Pyarmor 8.3.6 文档


一 简介

PyArmor是用于保护Python代码的工具,它可以将Python脚本编译成加密的字节码,以增加代码的保护性。它的主要目的是防止未经授权的访问、复制或修改您的Python代码。使用PyArmor,您可以将您的Python代码转换为不易阅读的字节码形式,并且需要在运行时提供授权文件才能解密和运行。这有助于防止普通用户直接查看您的源代码,但请注意,这并不能阻止所有可能的攻击。

知乎解读:PyArmor原理调研 - 知乎

github: GitHub - dashingsoft/pyarmor

二 使用

进入要加密的目录,假设main.py是要加密的文件。则

pyarmor obfuscate main.py

PyArmor 会加密 main.py 和相同目录下面的所有 *.py 文件:

并创建输出子目录 dist

之后按加密前的调用方法使用即可。

2.1 安装

pip install pyarmor

# 验证是否安装成功, 7.0 以下版本为稳定版
pyarmor --version

三 PyArmor新版本

只有三个命令:gen、reg 和 cfg

3.1 混淆一个脚本

三个命令都可以:gen, g, generate

pyarmor gen foo.py
pyarmor g foo.py
pyarmor generate foo.py

该命令 生成一个混淆的脚本dist/foo.py,这是一个有效的Python脚本,通过Python解释器运行它:

python dist/foo.py

检查默认输出路径中所有生成的文件:

ls dist/
...    foo.py
...    pyarmor_runtime_000000

有一个额外的 Python 包pyarmor_runtime_000000,需要它来运行混淆的脚本

3.2 分发脚本

仅仅复制dist/foo.py到另一台机器是行不通的,而是复制 dist/.

请在相同Python版本、相同平台的机器上运行此混淆代码,否则无法运行。因为pyarmor_runtime_000000扩展模块,所以它是平台相关的并且绑定到Python版本。

3.3 混淆包

pyarmor gen -O dist2 src/mypkg

检查输出格式是否正确:

$ ls dist2/
...    mypkg
...    pyarmor_runtime_000000

$ ls dist2/mypkg/
...          __init__.py

中的所有混淆脚本dist2/mypkg,测试一下:

cd dist2/
python -C 'import mypkg'

如果有子包,使用-r启用递归模式:

pyarmor gen -O dist2 -r src/mypkg

四 直接加密文件夹

pyarmor gen .

五 生成跨平台版本

pyarmor gen --platform windows.x86_64
              --platform linux.x86_64 \
              --platform darwin.x86_64 \
              foo.py

pyarmor gen --platform linux.x86_64 .

六 需要进一步执行的命令

6.1 生成加密文件

pyarmor gen main.py

6.2 拷贝文件到上级目录执行覆盖

xcopy /Y /E dist\*.* .

6.3 测试执行代码

python main.py

七 docker命令使用

# 6.1 生成加密文件
RUN pyarmor gen main.py
# 查看文件夹文件
RUN ls -a

<think>好的,用户之前问过关于适合小白的Python打包工具,我推荐了PyInstaller和PyArmor的组合。现在用户直接说“PyArmor用这个吧 教我怎么用”,看起来他已经决定使用PyArmor,现在需要具体的步骤指导。 首先,我需要确定用户的需求。用户可能已经用PyInstaller打包过,现在想增加代码混淆,防止代码被轻易反编译。他可能是新手,所以需要详细的步骤,避免配置复杂的问题。之前的对话里提到过PyArmor的简单加密,但用户现在可能需要更详细的指南。 接下来,我应该考虑用户的潜在问题。作为小白,用户可能对命令行操作不太熟悉,所以需要每一步都清晰,包括安装、基本使用、常见问题处理。另外,用户可能会遇到路径问题、依赖缺失或者混淆后的代码报错,这些都需要在指南中提前预警,给出解决办法。 然后,我要组织内容结构。先介绍PyArmor是什么,解决什么问题,然后分步骤讲解安装、基本混淆、打包、进阶功能(比如加密依赖包和自定义配置)。每个步骤都要有具体的命令和注释,说明每个参数的作用。之后,加入注意事项,比如杀毒软件误报、路径问题、代码兼容性,这些都是新手容易遇到的坑。 还要考虑用户可能的疑问,比如混淆后代码是否真的安全,是否需要和PyInstaller一起使用,以及如何处理混淆后的错误。因此,在常见问题里需要解答这些,并给出实际建议,比如重要逻辑放服务端,避免过度依赖本地加密。 最后,确保语言简洁,避免技术 jargon,用小白能理解的话解释概念。比如,解释混淆和加密的区别,说明PyArmor只是增加反编译难度,而不是绝对安全。同时,提醒用户测试混淆后的脚本,确保功能正常,再打包成EXE。 总结下来,用户的真实需求是简单有效地使用PyArmor保护代码,避免复杂配置,所以回复需要步骤明确,附带解决常见问题的方法,并管理预期,说明PyArmor的局限性。</think>好的!以下是针对小白的 **PyArmor 基础使用教程**,从安装到混淆代码再到打包成 EXE 的完整流程,尽量做到清晰无坑👇 --- ### **PyArmor 是什么?** - 一个 **代码混淆/加密工具**,通过重命名变量、打乱代码结构等方式,让反编译后的代码难以阅读。 - **注意**:它不提供绝对安全(高手仍能破解),但能显著增加逆向难度。 --- ### **第一步:安装 PyArmor** ```bash pip install pyarmor ``` - 如果安装慢,可以用国内镜像(如 `pip install pyarmor -i https://pypi.tuna.tsinghua.edu.cn/simple`) --- ### **第二步:基础用法(一键混淆)** #### **1. 对单个脚本混淆** ```bash pyarmor obfuscate your_script.py ``` - **生成文件**:在 `dist/` 文件夹中,会生成混淆后的脚本和依赖文件。 - **直接运行测试**: ```bash cd dist python your_script.py # 确保混淆后代码能运行! ``` #### **2. 混淆整个项目** ```bash pyarmor obfuscate --recursive --output dist/your_project src/ ``` - `--recursive`:递归处理文件夹内所有 `.py` 文件。 - `src/`:你的项目源码目录。 - `--output`:指定输出目录。 --- ### **第三步:混淆后打包成 EXE(配合 PyInstaller)** 1. **先完成代码混淆**(如上一步)。 2. **用 PyInstaller 打包混淆后的代码**: ```bash pyinstaller -F dist/your_script.py ``` - 生成的 EXE 在 `dist/` 文件夹中。 --- ### **第四步:进阶配置(小白可选)** #### **1. 加密依赖包** 如果脚本引用了其他本地 `.py` 文件: ```bash pyarmor obfuscate --recursive --with-license=yes your_script.py ``` - `--with-license=yes`:生成许可证文件,绑定加密到特定机器(需购买商业版)。 #### **2. 排除某些函数/类** 如果混淆后报错,可能是某些代码被过度混淆。手动排除: ```bash pyarmor obfuscate --exclude "def sensitive_function" your_script.py ``` --- ### **小白注意事项**(避坑必看!) 1. **杀毒软件可能误报**: - 混淆后的代码或 EXE 可能被误判为病毒,需手动添加信任或关闭杀软。 2. **路径问题**: - 如果脚本中有文件读取操作,建议使用绝对路径(如 `os.path.abspath(__file__)`)。 3. **不要混淆入口脚本**: - 如果代码中有 `if __name__ == "__main__":`,确保主逻辑简洁,否则可能运行失败。 4. **测试!测试!测试!**: - 混淆后一定先在命令行中运行 `python 混淆后的脚本.py`,确认功能正常后再打包 EXE。 --- ### **常见问题解答** #### **Q:PyArmor 加密的代码能被破解吗?** - **可以**,但成本较高。对于普通需求足够用,重要逻辑建议放在服务器端。 #### **Q:混淆后的代码报错怎么办?** - 检查是否排除了必要函数(用 `--exclude`)。 - 简化主脚本逻辑,确保没有动态导入(如 `__import__()`)。 #### **Q:如何更新许可证?** - 免费版默认生成临时许可证,长期使用需购买商业版。 --- ### **总结命令模板** ```bash # 混淆单个脚本 pyarmor obfuscate your_script.py # 混淆后打包 pyinstaller -F dist/your_script.py # 运行测试 cd dist && python your_script.py ``` 如果按照步骤操作仍有问题,可以贴出具体报错信息帮你排查! 😊
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值