为了账号安全,请及时绑定邮箱和手机立即绑定

如何保护Python代码?

如何保护Python代码?

喵喵时光机 2019-06-03 13:21:49
如何保护Python代码?我正在用Python开发一个软件,它将分发给我雇主的客户。我的雇主想用一个时间限制的许可文件来限制软件的使用。如果我们分发.py文件,甚至.pyc文件,那么很容易(反编译并)删除检查许可文件的代码。另一个方面是,我的雇主不希望我们的客户阅读代码,担心代码可能被偷,或者至少是“新颖的想法”。有什么好办法来处理这个问题吗?最好有现成的解决方案。该软件将在Linux系统上运行(因此我不认为py2exe会起作用)。
查看完整描述

4 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

Python是一种字节码编译的解释语言,很难锁定.即使您使用了exe包程序,如py2exe,可执行文件的布局是众所周知的,Python字节码也很容易理解.

通常在这种情况下,你必须做出权衡。保护代码到底有多重要?里面是否有真正的秘密(例如对称加密银行转账的密钥),还是你只是疑神疑鬼?选择一种语言,让你开发最好的产品最快,并对你的新想法有多有价值现实。

如果您决定确实需要安全地强制执行许可证检查,请将其编写为一个小的C扩展,这样许可证检查代码就可以额外困难(但不是不可能!)若要进行逆向工程,请将大部分代码保留在Python中。


查看完整回答
反对 回复 2019-06-03
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

Python不是你需要的工具

您必须使用正确的工具来做正确的事情,而Python的设计并不是为了混淆。相反,在Python中,所有东西都是开放的或易于揭示或修改的,因为这是语言的哲学。

如果你想要一些你看不见的东西,找另一个工具。这并不是一件坏事,重要的是有几种不同的工具存在于不同的使用中。

混淆真的很难

即使是编译的程序也可以进行反向工程,所以不要认为您可以完全保护任何代码。您可以分析混淆PHP,破坏闪存加密密钥,等等。Windows的新版本每次都会被破解。

有法律要求是个好办法。

您不能防止某人滥用您的代码,但您可以很容易地发现,如果有人这样做。因此,这只是一个偶然的法律问题。

代码保护被高估了

如今,商业模式倾向于销售服务而不是产品。你不能复制一项服务,也不能盗用它。也许是时候考虑随波逐流了.。


查看完整回答
反对 回复 2019-06-03
?
呼唤远方

TA贡献1856条经验 获得超11个赞

编译python并分发二进制文件!

明智的想法:

使用Cython努特卡脱落皮肤或者类似于将python编译成C代码,然后将应用程序作为python二进制库(PYD)分发。

这样,就不会留下Python(字节)代码,我认为,您已经从普通代码中得到了任何人(即雇主)所期望的任何合理程度的模糊化。(.NET或Java比这种情况更不安全,因为字节码没有混淆,可以相对容易地分解为合理的源)。

Cython与CPython的兼容性越来越强,所以我认为它应该能工作。(我实际上在考虑这个作为我们的产品.。我们已经在构建一些第三方库,如PYD/dll,所以将我们自己的python代码作为二进制文件发布对我们来说并不是太大的一步。)

看见这篇博文(不是我写的)关于如何做这件事的教程。(THX@hithwen)

疯狂的想法:

您可能会让Cython为每个模块分别存储C文件,然后将它们全部连接起来,并使用大量内联构建它们。这样,您的Python模块就相当单一,很难用普通的工具进行芯片处理。

超越疯狂:

如果您可以静态地链接到python运行时和所有库(Dll)并进行优化,您可能能够构建单个可执行文件。这样,就很难拦截对python和您使用的任何框架库的调用。但是,如果使用LGPL代码,则无法做到这一点。


查看完整回答
反对 回复 2019-06-03
  • 4 回答
  • 0 关注
  • 1045 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信