Python源代码混淆器如何使用

oxyry python obfuscator

http://pyob.oxyry.com

目前的加密手段:

  • 只发行 pyc: 可以用现成工具复原
  • 用打包 exe 打包: 可以用现成工具复原
  • cython: 要加密单一的模块 /特制算法很有效,不过对很多模块的源代码容易出不了坑,比如 django 写的 app
  • 改字节码的 python: 未丢失信息,容易复原

这个混淆器可以做到尽量使重写比看懂容易,可以多种手段并用,避免发行的程序被二次开发

PS. 几年前发过,今天重新改了下支持到 python 3.6


Python源代码混淆器如何使用

8 回复

之前遇到过魔改 python 解释器的,运行的时候得打包解释器一起运行。


要使用Python源代码混淆器,最常用的是 pyarmor。首先通过 pip install pyarmor 安装。然后,在你的项目根目录下,执行 pyarmor obfuscate your_script.py 即可生成混淆后的代码。混淆后的文件会输出到 dist 目录中,可以直接用Python解释器运行,如 python dist/your_script.py

如果你需要混淆整个包,命令是 pyarmor obfuscate --recursive your_package/pyarmor 默认会进行基础混淆,你还可以通过 --advanced 等选项启用更高级的混淆技术,比如控制流扁平化,这会让代码更难反编译,但可能会轻微影响运行效率。

这里有个简单的例子。假设你有一个文件 hello.py

# hello.py
def greet(name):
    print(f"Hello, {name}!")

if __name__ == "__main__":
    greet("World")

在命令行运行:

pyarmor obfuscate hello.py

之后查看 dist/hello.py,你会发现代码已经完全变样了,但功能不变。

总结:用 pyarmor 一行命令就能混淆你的代码。

只是把变量名混淆了一下,感觉还是有点弱。。

既然要加密,为啥要用 python

放出去的代码要避免被逆向,总是有风险,要完全避免被逆向,硬件上加密狗,要么就 saas

支持楼主,这个产品其实是防了人,不防机器。不过稍大的项目,破坏了变量名的字面含义,已经很难理解了,就像看别人变量名瞎起名都会造成业务逻辑难以理解,根本看不下去了

没源码啊

不知道 cython 能不能搞定 flask

回到顶部