如何将python源代码保护和编译到.so库中?
问题内容:
我想 保护我的python源代码 ,我知道没有绝对的保护可能,但是仍然应该有一些方法使它做起来很困难或非常耗时。我想要
1) 删除所有文档,并自动注释
2) 系统地更改模块中变量和函数的名称(混淆?),以便我可以保留一个外部接口(具有有意义的名称),而变量和函数的内部名称无法发音。
可能会使1)和2)成为多余的最佳解决方案 如下 :
3) 有没有简单的 方法可以将python模块编译为.so库 ,具有清晰的接口并且 可以被其他python模块使用
?这类似于使用distutils构建C和C 扩展,除了源代码是python本身而不是C / C
。想法是将所有“秘密代码”组织到模块中,进行编译,然后将其导入其余的python代码(不视为秘密)中。
再一次,我知道一切都可以进行逆向工程,我认为用务实的话来说,大多数普通开发人员将无法对工程代码进行逆向工程,即使他们能够做到,但出于道德/法律/时机上的考虑,它们也会使它们成为现实。如果他们真的想解决这个问题,请三思。
问题答案:
正如mgilson在评论中提到的那样,Cython可能是您最好的选择。一般来说,您可以使用它将纯python源代码转换为已编译的扩展模块。尽管Cython的主要目的是提高性能,但是使用Cython进行源代码保护应该没有任何障碍。它输出的扩展模块没有任何特殊的限制,因此您以前可以在Python中执行的任何操作,都应该可以从Cython生成的扩展模块中执行。Cython在受支持的功能方面确实存在一些已知的限制,但总的来说,它看起来很适合满足您的目的。