【问题标题】:Python Code Obfuscation [closed]Python代码混淆[关闭]
【发布时间】:2009-02-23 09:08:05
【问题描述】:

你知道任何可以帮助我混淆 python 代码的工具吗?

【问题讨论】:

标签: python obfuscation


【解决方案1】:

您的问题空间未指定。这是用于命令行应用程序吗?这段代码应该用作库吗?

除了其他两个答案之外,您还可以将代码嵌入到二进制文件中。当它启动时,解码代码并评估字符串。这也适用于共享库扩展。我认为你也可以使用字节码来做到这一点,但它不会像调用 Py_EvalCode 那样简单。

py2exe 或 freeze 是其他解决方案,它们将代码转换为可执行文件。它只是将代码包含在二进制文件中,并没有做任何严重的混淆,但它仍然比打开 .py 文件更难。

你可以用 Cython 编写代码,它类似于 Python,用 C 编写 Python 扩展文件,用作 .so。这可能是逆向工程中最难的,并且仍然为您提供高级语言进行开发。

它们都是可破解的,所有解决方案也是如此。你希望它有多难?

【讨论】:

  • +1 用于 Cython,我最近使用它,发现它的功能非常好。
  • 如果我不想要简单的decompyle 可能,最简单的解决方案是什么?
【解决方案2】:
【解决方案3】:

我实际上发现了一个非常好的项目,它基本上将 Python 转换为 C++ 并创建了一个二进制、静态链接文件。

看看这个:http://www.nuitka.net/

【讨论】:

    【解决方案4】:

    在许多情况下,您可以发送字节编译的 .pyc 文件而不是 .py 源文件。这给了你一定程度的混淆。正如 pyobfuscate README 所暗示的,这有局限性。但是您也许可以将这两种方法结合起来。

    【讨论】:

      【解决方案5】:

      Python 的标准库包括compileall.py。您可以在目录上运行它,它将为您的所有源文件生成 .pyc 文件。 .pyc 文件将仅包含字节码和文档字符串,并将删除所有 cmets。然后你可以复制这个目录,然后运行rm -rf $(find . -name .py)之类的东西来删除原始源文件。

      【讨论】:

        【解决方案6】:

        最好的办法是使用Shed Skin 编译它,这是一个实验性的 Python 到 C++ 编译器。

        【讨论】:

        • 还有 Pypy,但它没有文档,而且它接受的代码非常有限。
        • @Antimony:你说的是 RPython 吗? PyPy(使用 RPython)是 Python 的完整实现,它接受的代码完全不受限制。
        • @John 是的,我说的是 RPython。它是 PyPy 项目的一部分。
        • RPython 是编写 Pypy 的语言部分。它是 Pypy 的受限子集。然而,Pypy 实现了一个相当完整的 Python 解释器。
        【解决方案7】:

        虽然它不进行混淆处理,但这个Python recipe 非常适合最小化 Python 代码的大小,包括去除 cmets。

        【讨论】:

          猜你喜欢
          • 2010-10-20
          • 2018-08-01
          • 2011-10-26
          • 2010-09-18
          • 2011-11-21
          • 1970-01-01
          相关资源
          最近更新 更多