“兼容性强、跨平台Win和MacOS不限制Python3版本最稳定且有效的方式是采用“动态加壳Packer”的混淆模式。市面上很多混淆工具如基于.pyc或marshal的工具会把代码编译为字节码但这会导致代码与具体的 Python 版本如 Python 3.8 无法运行 3.10 的字节码强绑定且容易产生平台兼容问题。下面为你提供一个纯Python实现的加壳混淆器代码。它通过Zlib压缩-XOR加密-Base64编码-Lambda动态解密加载的方式完美避开了版本依赖确保在任何系统的任何 Python3 版本上都能稳定运行。混淆器源码 (obfuscator.py)请新建一个名为obfuscator.py的文件并将以下代码复制进去importzlibimportbase64importrandomimportsysimportosdefobfuscate_code(input_file,output_file):ifnotos.path.exists(input_file):print(f[-] 找不到输入文件:{input_file})return# 1. 读取源代码withopen(input_file,r,encodingutf-8)asf:source_codef.read()# 2. Zlib 压缩 (减小体积并消除明文特征)compressedzlib.compress(source_code.encode(utf-8),level9)# 3. 随机 XOR 密钥加密 (防止轻易被 base64/zlib 自动化工具直接解密)keyrandom.randint(1,255)encryptedbytes(b^keyforbincompressed)# 4. Base64 编码 (确保跨平台传输不会出现乱码或换行符问题)b64_strbase64.b64encode(encrypted).decode(ascii)# 5. 生成混淆后的启动器 (Loader)# 技巧:# - 使用 lambda 匿名函数封装避免产生常规的变量定义# - 传入 globals() 确保脚本内部的全局变量和函数能被正确注册# - 将 exec, zlib, base64 等敏感关键字通过字符串拼接拆散防止静态正则查杀loader_codef# -*- coding: utf-8 -*- # Compatible with Windows MacOS | Any Python 3.x (lambda e, g, i, k, s: e(i(zlib).decompress(bytes([x ^ k for x in i(base64).b64decode(s)])).decode(utf-8), g))( exec, globals(), __import__,{key}, {b64_str} ) # 6. 写入输出文件withopen(output_file,w,encodingutf-8)asf:f.write(loader_code)print(-*40)print(f[] 混淆成功)print(f[] XOR 密钥 :{key})print(f[] 输出文件 :{output_file})print(-*40)if__name____main__:# 简单的命令行参数解析iflen(sys.argv)!3:print(用法: python obfuscator.py 你要混淆的脚本.py 输出的脚本.py)else:obfuscate_code(sys.argv[1],sys.argv[2])如何使用它假设你有一个需要被保护的代码文件名为my_script.py。打开终端Win为CMD/PowerShellMac为Terminal运行以下命令python obfuscator.py my_script.py build_script.py运行后会生成一个新的build_script.py这就是混淆后的代码。它看起来会是一堆乱码如b64字符串直接运行python build_script.py即可效果与原代码完全一致。为什么这段代码能完美满足你的要求绝对的跨平台Win/Mac兼容代码中仅使用了 Python 标准库 (zlib,base64,random)没有任何底层 C 扩展或系统 API 调用。在 MacOS 和 Windows 上的执行逻辑完全对称。不强制依赖 Python 3 的版本不使用AST抽象语法树操作也不生成.pyc。Python 3.4 和 Python 3.12 在exec()和内置库上的底层支持是完全相同的兼容所有的 Python 3.x 环境。强大的作用域穿透 (globals()Trick)许多劣质的混淆代码直接使用exec(code)这会导致代码被困在局部作用域中造成原代码里的跨文件import或全局函数报错。本代码显式传入了globals()给exec确保你的原代码环境与未混淆前保持100% 一致。防静态特征分析Loader 把zlib、base64等关键字写成了zlib的拼接形式能够躲过一些基础的静态扫描器并且使用了随机的XOR密钥每次混淆生成的乱码都完全不一样动态特征。(注如果是对付非常专业的逆向工程师任何纯Python加密最终都能被动态调试如 hookexec还原出源码。如果你的目的是防小白、防竞品抄袭、并且要求极高的运行稳定性这种方案是最佳平衡点。)
Python3代码加密
发布时间:2026/5/22 21:13:30
“兼容性强、跨平台Win和MacOS不限制Python3版本最稳定且有效的方式是采用“动态加壳Packer”的混淆模式。市面上很多混淆工具如基于.pyc或marshal的工具会把代码编译为字节码但这会导致代码与具体的 Python 版本如 Python 3.8 无法运行 3.10 的字节码强绑定且容易产生平台兼容问题。下面为你提供一个纯Python实现的加壳混淆器代码。它通过Zlib压缩-XOR加密-Base64编码-Lambda动态解密加载的方式完美避开了版本依赖确保在任何系统的任何 Python3 版本上都能稳定运行。混淆器源码 (obfuscator.py)请新建一个名为obfuscator.py的文件并将以下代码复制进去importzlibimportbase64importrandomimportsysimportosdefobfuscate_code(input_file,output_file):ifnotos.path.exists(input_file):print(f[-] 找不到输入文件:{input_file})return# 1. 读取源代码withopen(input_file,r,encodingutf-8)asf:source_codef.read()# 2. Zlib 压缩 (减小体积并消除明文特征)compressedzlib.compress(source_code.encode(utf-8),level9)# 3. 随机 XOR 密钥加密 (防止轻易被 base64/zlib 自动化工具直接解密)keyrandom.randint(1,255)encryptedbytes(b^keyforbincompressed)# 4. Base64 编码 (确保跨平台传输不会出现乱码或换行符问题)b64_strbase64.b64encode(encrypted).decode(ascii)# 5. 生成混淆后的启动器 (Loader)# 技巧:# - 使用 lambda 匿名函数封装避免产生常规的变量定义# - 传入 globals() 确保脚本内部的全局变量和函数能被正确注册# - 将 exec, zlib, base64 等敏感关键字通过字符串拼接拆散防止静态正则查杀loader_codef# -*- coding: utf-8 -*- # Compatible with Windows MacOS | Any Python 3.x (lambda e, g, i, k, s: e(i(zlib).decompress(bytes([x ^ k for x in i(base64).b64decode(s)])).decode(utf-8), g))( exec, globals(), __import__,{key}, {b64_str} ) # 6. 写入输出文件withopen(output_file,w,encodingutf-8)asf:f.write(loader_code)print(-*40)print(f[] 混淆成功)print(f[] XOR 密钥 :{key})print(f[] 输出文件 :{output_file})print(-*40)if__name____main__:# 简单的命令行参数解析iflen(sys.argv)!3:print(用法: python obfuscator.py 你要混淆的脚本.py 输出的脚本.py)else:obfuscate_code(sys.argv[1],sys.argv[2])如何使用它假设你有一个需要被保护的代码文件名为my_script.py。打开终端Win为CMD/PowerShellMac为Terminal运行以下命令python obfuscator.py my_script.py build_script.py运行后会生成一个新的build_script.py这就是混淆后的代码。它看起来会是一堆乱码如b64字符串直接运行python build_script.py即可效果与原代码完全一致。为什么这段代码能完美满足你的要求绝对的跨平台Win/Mac兼容代码中仅使用了 Python 标准库 (zlib,base64,random)没有任何底层 C 扩展或系统 API 调用。在 MacOS 和 Windows 上的执行逻辑完全对称。不强制依赖 Python 3 的版本不使用AST抽象语法树操作也不生成.pyc。Python 3.4 和 Python 3.12 在exec()和内置库上的底层支持是完全相同的兼容所有的 Python 3.x 环境。强大的作用域穿透 (globals()Trick)许多劣质的混淆代码直接使用exec(code)这会导致代码被困在局部作用域中造成原代码里的跨文件import或全局函数报错。本代码显式传入了globals()给exec确保你的原代码环境与未混淆前保持100% 一致。防静态特征分析Loader 把zlib、base64等关键字写成了zlib的拼接形式能够躲过一些基础的静态扫描器并且使用了随机的XOR密钥每次混淆生成的乱码都完全不一样动态特征。(注如果是对付非常专业的逆向工程师任何纯Python加密最终都能被动态调试如 hookexec还原出源码。如果你的目的是防小白、防竞品抄袭、并且要求极高的运行稳定性这种方案是最佳平衡点。)