如何保护Python源代码并将其编译成.so库?

Man*_*gia 6 python compilation source-code-protection

我想保护我的python源代码,我知道不可能有绝对的保护,但仍然应该有一些方法让它变得足够困难或相当耗时。我想

1)自动删除所有文档、注释和

2)系统地更改模块内变量和函数的名称(混淆?),以便我可以保留外部接口(具有有意义的名称),而变量和函数的内部名称无法发音。

也许最好的解决方案如下

3)是否有一种简单的方法将python模块编译为.so库,具有清晰的接口并且可以被其他python模块使用?这与使用 distutils 构建 C 和 C++ 扩展类似,只是源代码是 python 本身而不是 C/C++。这个想法是将所有“秘密代码”组织成模块,编译它们,然后将它们导入到不被视为秘密的Python代码的其余部分中。

再次,我知道一切都可以进行逆向工程,我认为从务实的角度来看,大多数普通开发人员将无法对代码进行逆向工程,即使他们能够,道德/法律/时间原因也会使他们如果他们真的想从事这方面的工作,请三思而后行。

Rak*_*kis 7

正如 mgilson 在评论中提到的,Cython 可能是您最好的选择。一般来说,您可以使用它将纯Python源代码转换为编译后的扩展模块。虽然 Cython 的主要目的是增强性能,但使用它进行源代码保护不应该有任何障碍。它输出的扩展模块不受任何特殊方式的限制,因此您之前能够在 Python 中执行的任何操作,您应该能够从 Cython 生成的扩展模块执行。Cython 在支持的功能方面确实有一些已知的限制,可能需要解决这些限制,但总的来说,它看起来非常适合您的目的。

  • @Mannaggia尝试[Nuitka](http://nuitka.net),它可以递归地将你的py模块转换为c++源文件,并将它们编译成单个so文件(或者如果你愿意的话,可以编译成独立的可执行文件)。 (2认同)