猿问

如何保护Python代码?

如何保护Python代码?

我正在用Python开发一个软件,它将分发给我雇主的客户。我的雇主想用一个时间限制的许可文件来限制软件的使用。

如果我们分发.py文件,甚至.pyc文件,那么很容易(反编译并)删除检查许可文件的代码。

另一个方面是,我的雇主不希望我们的客户阅读代码,担心代码可能被偷,或者至少是“新颖的想法”。

有什么好办法来处理这个问题吗?最好有现成的解决方案。

该软件将在Linux系统上运行(因此我不认为py2exe会起作用)。


喵喵时光机
浏览 1046回答 4
4回答

杨__羊羊

Python是一种字节码编译的解释语言,很难锁定.即使您使用了exe包程序,如py2exe,可执行文件的布局是众所周知的,Python字节码也很容易理解.通常在这种情况下,你必须做出权衡。保护代码到底有多重要?里面是否有真正的秘密(例如对称加密银行转账的密钥),还是你只是疑神疑鬼?选择一种语言,让你开发最好的产品最快,并对你的新想法有多有价值现实。如果您决定确实需要安全地强制执行许可证检查,请将其编写为一个小的C扩展,这样许可证检查代码就可以额外困难(但不是不可能!)若要进行逆向工程,请将大部分代码保留在Python中。

ABOUTYOU

Python不是你需要的工具您必须使用正确的工具来做正确的事情,而Python的设计并不是为了混淆。相反,在Python中,所有东西都是开放的或易于揭示或修改的,因为这是语言的哲学。如果你想要一些你看不见的东西,找另一个工具。这并不是一件坏事,重要的是有几种不同的工具存在于不同的使用中。混淆真的很难即使是编译的程序也可以进行反向工程,所以不要认为您可以完全保护任何代码。您可以分析混淆PHP,破坏闪存加密密钥,等等。Windows的新版本每次都会被破解。有法律要求是个好办法。您不能防止某人滥用您的代码,但您可以很容易地发现,如果有人这样做。因此,这只是一个偶然的法律问题。代码保护被高估了如今,商业模式倾向于销售服务而不是产品。你不能复制一项服务,也不能盗用它。也许是时候考虑随波逐流了.。

呼唤远方

编译python并分发二进制文件!明智的想法:使用Cython, 努特卡, 脱落皮肤或者类似于将python编译成C代码,然后将应用程序作为python二进制库(PYD)分发。这样,就不会留下Python(字节)代码,我认为,您已经从普通代码中得到了任何人(即雇主)所期望的任何合理程度的模糊化。(.NET或Java比这种情况更不安全,因为字节码没有混淆,可以相对容易地分解为合理的源)。Cython与CPython的兼容性越来越强,所以我认为它应该能工作。(我实际上在考虑这个作为我们的产品.。我们已经在构建一些第三方库,如PYD/dll,所以将我们自己的python代码作为二进制文件发布对我们来说并不是太大的一步。)看见这篇博文(不是我写的)关于如何做这件事的教程。(THX@hithwen)疯狂的想法:您可能会让Cython为每个模块分别存储C文件,然后将它们全部连接起来,并使用大量内联构建它们。这样,您的Python模块就相当单一,很难用普通的工具进行芯片处理。超越疯狂:如果您可以静态地链接到python运行时和所有库(Dll)并进行优化,您可能能够构建单个可执行文件。这样,就很难拦截对python和您使用的任何框架库的调用。但是,如果使用LGPL代码,则无法做到这一点。
随时随地看视频慕课网APP

相关分类

Python
我要回答