如果确实存在'最佳'方式,那么 是运送python应用程序的最佳方式,并确保人们无法(轻松)对您的算法/安全/工作进行反向工程设计?
如果没有“最佳”方式,可用的选项有哪些?
背景: 我喜欢Python编码,并希望用它发布更多应用程序。我想知道的一件事是,人们可能会绕过我放入的任何许可代码,或者只能破掉我的整个源代码库。我听说过Py2Exe和类似的应用程序,但我很好奇是否有“首选”方法,或者这个问题只是生活中的事实。
答案 0 :(得分:12)
通过默默无闻的安全从不有效。如果您必须使用专有许可证,请通过法律强制执行,而不是半生不熟的混淆尝试。
如果您担心他们学习您的安全性(例如加密算法),则同样适用。即使算法是完全已知的,真实有用的安全算法(如AES)也是安全的。
答案 1 :(得分:7)
即使你使用像C#或Java这样的编译语言,如果他们有动力和技术能力,人们也可以进行逆向工程。混淆不是对此的可靠保护。
您可以为您的软件的最终用户许可协议添加禁止逆向工程的禁令。大多数专有公司都这样做。但这并不能防止违规行为,它只会让您获得法律追索权。
最佳解决方案是提供产品和服务,用户访问您的代码不会损害您销售产品或服务的能力。将您的业务基于所提供的服务,或订阅定期更新数据,而不是代码本身。
示例:Slashdot实际上为他们的网站提供了他们的代码。这会损害他们运营网站的能力吗?否。
另一个补救措施是设置您的价格点,以便盗用您的代码的努力比仅仅购买合法的许可证以使用您的产品更昂贵。 Joel Spolsky在他的文章和播客中提出了这种效果的建议。
答案 2 :(得分:5)
在Python中发送commercial mac desktop app,我们完全按照其他答案中的描述进行操作;通过法律保护自己有一个体面的EULA,而不是通过混淆。
我们从来没有遇到任何人员对我们的代码进行逆向工程的麻烦。如果我们这样做,我相信我们可以采取法律行动。所以是的,这是生活中的事实。但是一个不太难以忍受的人。只要找一位体面的律师写一个体面的EULA。
答案 3 :(得分:3)
你正在寻找的词是混淆的。一个快速的谷歌揭示:
http://www.lysator.liu.se/~astrand/projects/pyobfuscate/
但:
a)如果侵犯版权成为问题,那么法律就在您身边(只要您在所有文件中包含适当的版权声明)。
b)如果你对它很聪明,也可以在开源应用程序上获利。
c)如果您希望您的知识产权真正安全,那么唯一的答案是不要让任何人首先拥有它:将您的应用程序编写为Web应用程序(我建议使用django),只有您的网站托管服务提供商可以访问您的代码。
答案 4 :(得分:1)
<强> py2exe 强>
在Windows上,py2exe是向最终用户发送代码的一种方式,py2exe捆绑python解释器,必要的dll和编译为python字节码的代码。
这是python字节码指令,以获得一些线索:
http://www.python.org/doc/2.5.2/lib/bytecodes.html
或者您可以使用 dis 来反汇编一些pyc / pyo文件。
因此,使用py2exe类似于分发编译的python(pyc / pyo)文件。
Shedskin C ++编译器
Shedskin编译器将python的一个子集编译为C ++,您可以使用任何编译器将其编译为本机代码。
<强> pypy 强>
我不太了解PyPy。根据他们的文档,Pypy能够生成C代码。