【发布时间】:2009-02-23 09:08:05
【问题描述】:
你知道任何可以帮助我混淆 python 代码的工具吗?
【问题讨论】:
-
还有更一般的讨论:stackoverflow.com/questions/164137/…
标签: python obfuscation
你知道任何可以帮助我混淆 python 代码的工具吗?
【问题讨论】:
标签: python obfuscation
您的问题空间未指定。这是用于命令行应用程序吗?这段代码应该用作库吗?
除了其他两个答案之外,您还可以将代码嵌入到二进制文件中。当它启动时,解码代码并评估字符串。这也适用于共享库扩展。我认为你也可以使用字节码来做到这一点,但它不会像调用 Py_EvalCode 那样简单。
py2exe 或 freeze 是其他解决方案,它们将代码转换为可执行文件。它只是将代码包含在二进制文件中,并没有做任何严重的混淆,但它仍然比打开 .py 文件更难。
你可以用 Cython 编写代码,它类似于 Python,用 C 编写 Python 扩展文件,用作 .so。这可能是逆向工程中最难的,并且仍然为您提供高级语言进行开发。
它们都是可破解的,所有解决方案也是如此。你希望它有多难?
【讨论】:
decompyle 可能,最简单的解决方案是什么?
我实际上发现了一个非常好的项目,它基本上将 Python 转换为 C++ 并创建了一个二进制、静态链接文件。
【讨论】:
在许多情况下,您可以发送字节编译的 .pyc 文件而不是 .py 源文件。这给了你一定程度的混淆。正如 pyobfuscate README 所暗示的,这有局限性。但是您也许可以将这两种方法结合起来。
【讨论】:
Python 的标准库包括compileall.py。您可以在目录上运行它,它将为您的所有源文件生成 .pyc 文件。 .pyc 文件将仅包含字节码和文档字符串,并将删除所有 cmets。然后你可以复制这个目录,然后运行rm -rf $(find . -name .py)之类的东西来删除原始源文件。
【讨论】:
最好的办法是使用Shed Skin 编译它,这是一个实验性的 Python 到 C++ 编译器。
【讨论】:
虽然它不进行混淆处理,但这个Python recipe 非常适合最小化 Python 代码的大小,包括去除 cmets。
【讨论】: