我如何保护Python代码?
我正在开发一个Python软件,将分发给我的雇主的客户。 我的雇主希望限制软件的使用时间限制许可证文件。
如果我们分发.py文件或甚至.pyc文件,将很容易(反编译)并删除检查许可证文件的代码。
另一方面是我的雇主不希望我们的客户阅读代码,担心代码可能被盗用,或者至少是“新颖的想法”。
有没有解决这个问题的好方法? 最好采用现成的解决方案。
该软件将在Linux系统上运行(所以我不认为py2exe会做到这一点)。
Python是一种字节码编译的解释型语言,非常难以锁定。 即使您使用像py2exe这样的exe-packager,可执行文件的布局也是众所周知的,并且Python字节码也很好理解。
通常在这种情况下,您必须进行权衡。 保护代码真的有多重要? 那里是否有真正的秘密(比如银行转账的对称加密的关键),还是你只是偏执狂? 选择能让你最快速地开发出最佳产品的语言,并且对你的新颖想法的价值抱有现实感。
如果您确定您确实需要安全地强制执行许可证检查,请将其作为小型C扩展插件进行编写,以便许可证检查代码可以非常难(但并非不可能)以进行反向工程,并将大部分代码保留在Python中。
“有没有解决这个问题的好方法?” 没有。没有任何东西可以防止逆向工程。 甚至DVD机器上的固件也被反向设计并暴露了AACS加密密钥。 尽管数字千年版权法案将这视为刑事犯罪,
由于没有技术方法可以阻止你的客户阅读你的代码,你必须使用普通的商业方法。
许可证。 合同。 条款和条件。 即使人们可以阅读代码,这仍然有效。 请注意,在使用这些组件销售软件之前,您的一些基于Python的组件可能需要您付费。 此外,一些开源许可证禁止您隐藏该组件的来源或来源。
提供重要价值。 如果你的东西非常好 - 以难以拒绝的价格 - 没有任何浪费时间和金钱来逆向工程的动机。 逆向工程很昂贵。 让你的产品稍微便宜一些。
提供升级和增强功能,使任何逆向工程成为一个糟糕的主意。 当下一个版本打破逆向工程时,没有意义。 这可以进行到荒谬的极端,但您应该提供新功能,使下一版本比逆向工程更有价值。
以非常吸引人的价格提供定制服务,以致他们宁愿为您付费制作并支持增强功能。
使用过期的许可证密钥。 这是残酷的,会给你一个不好的名声,但它肯定会让你的软件停止工作。
将其作为网络服务提供。 SaaS不涉及向客户下载。
Python不是你需要的工具
你必须使用正确的工具来做正确的事情,而Python的设计不是被混淆。 恰恰相反; 一切都是开放的或易于在Python中显示或修改,因为这是语言的哲学。
如果你想要看不到的东西,寻找另一种工具。 这不是一件坏事,重要的是几种不同的工具存在于不同的用途。
混淆真的很难
即使编译的程序也可以进行反向设计,所以不要认为您可以完全保护任何代码。 您可以分析混淆PHP,破解闪存加密密钥等。每次都会破解较新版本的Windows。
有法律要求是一个好方法
你无法防止某人滥用你的代码,但你可以很容易地发现是否有人这样做。 因此,这只是一个偶然的法律问题。
代码保护被高估
现在,商业模式倾向于销售服务而不是产品。 你不能复制服务,盗版或盗取它。 也许是时候考虑顺应潮流了......
链接地址: http://www.djcxy.com/p/81875.html