- 发行.pyc文件(👍)
- 代码混淆(👍)
- 使用py2exe(仅限windows)
- 使用Cython(兼容性差)
1、发行 .pyc文件
1)原理
.pyc文件 : 二进制文件,无法看出源码内容。
python执行代码原理:代码 —> .pyc文件 —> 解释执行.pyc文件中内容。
因此,python解释器也可以直接执行.pyc文件
2)步骤
使用python标准库自带的 compileall即可。
3)优点
- 简单方便,提高源码激活成功教程门槛
- 平台兼容性好,.py能在哪运行,.pyc就能在哪运行
4)缺点
- 解释器兼容性查,.pyc只能在特定版本的解释器上运行
- 有现成的反编译工具,激活成功教程成本低
- python-uncompyle6 就是这样一款反编译工具
2、代码混淆
1)原理
通过一系列的转换,让代码逐渐不让人那么容易明白。
主要有以下几种手段:
- 移除注释和文档。没有这些说明,在一些关键逻辑上就没那么容易明白了。
- 改变缩进。完美的缩进看着才舒服,如果缩进忽长忽短,看着也一定闹心。
- 在tokens中间加入一定空格。这就和改变缩进的效果差不多。
- 重命名函数、类、变量。命名直接影响了可读性,乱七八糟的名字可是阅读理解的一大障碍。
- 在空白行插入无效代码。
2)步骤
方法①: 使用oxyry进行混淆
http://pyob.oxyry.com/ 是一个在线混淆 Python 代码的网站,使用它可以方便地进行混淆。
左侧输入源码,点击[OBFUSCATE](模糊),即可在右侧看到模糊后的代码。

方法②: 使用pyobfuscate库进行混淆
pyobfuscate 算是一个颇具年头的 Python 代码混淆库了,但却是“老当益壮”了。

- 使用方法:
- 下载安装pyobfuscate(pypi上没有)https://github.com/astrand/pyobfuscate
- 上面安装 macos可能会失败,原因是文件中指定data放到/usr/bin,而macos文件系统有安全保护。 我这里直接将源码复制到 pyobfuscate 目录下,然后执行命令模糊代码。
- 如果安装好,则可直接调用,模糊代码
- 结果会输出在控制台,类似print。
- 不幸的是,pyobfuscate一次只能处理一个源文件,所以它并不适合大型项目。它目前似乎也只适用于python2
- 下载安装pyobfuscate(pypi上没有)https://github.com/astrand/pyobfuscate
3)优点
- 简单方便,提高了一点源码激活成功教程门槛
- 兼容性好,只要源码逻辑能做到兼容,混淆代码亦能
4)缺点
- 只能对单个文件混淆,无法做到多个互相有联系的源码文件的联动混淆
- 代码结构未发生变化,也能获取字节码,激活成功教程难度不大
- pyobfuscate年久未更,目前只适用于python2
3、使用py2exe
1)原理
py2exe 是一款将 Python 脚本转换为 Windows 平台上的可执行文件的工具。其原理是将源码编译为 文件,加之必要的依赖文件,一起打包成一个可执行文件。
最终发行由 打包出的二进制文件。
2)步骤(只能在windos运行)
- 编写入口文件。本示例中取名为 :
- 编写 :
- 生成可执行文件
- 生成的可执行文件位于 。
3)优点
- 能够直接打包成 exe,方便分发和执行
- 激活成功教程门槛比 .pyc 更高一些
4)缺点
- 兼容性差,只能运行在 Windows 系统上
- 生成的可执行文件内的布局是明确、公开的,可以找到源码对应的 文件,进而反编译出源码
4、使用Cython
1)原理
虽说 的主要目的是带来性能的提升,但是基于它的原理:将 / 编译为 文件,再将 文件编译为 (Unix) 或 (Windows),其带来的另一个好处就是难以激活成功教程。
2)步骤
- 编写文件 或 :
- 编写 :
- 编译为 ,再进一步编译为 或 :
- 执行 即可直接引用生成的二进制文件中的 函数。

3)优点
- 生成的二进制 .so 或 .pyd 文件难以激活成功教程
- 同时带来了性能提升
4)缺点
- 兼容性稍差,对于不同版本的操作系统,可能需要重新编译
- 虽然支持大多数 Python 代码,但如果一旦发现部分代码不支持,完善成本较高
参考资料:如何保护你的 Python 代码 (一)—— 现有加密方案
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/1405.html
