将脚本打包为可执行文件时会发生什么?这是分发商业应用程序的好方法吗?我记得很久以前我读过一些东西,当你把脚本打包成可执行文件时,exe会在运行时将脚本解压缩到一个临时目录,然后运行它们。
如果是这样,我不认为这可以被视为一个好的解决方案,因为熟练的用户可以找到该目录的位置并找到源代码。我对Python&红宝石。
答案 0 :(得分:3)
使用Python(例如pyinstaller - 确保获得SVN版本,“已发布”版本已过时 - 或py2exe)您可以打包字节码。当然,它可以“反向编译”,就像Java字节码或.NET程序集(或者就此而言,机器代码)一样,但我认为尽管存在反汇编程序,它仍然是一个“不透明”的体面。我猜你也可以在编译它们之前在源代码上使用类似pyobfuscate之类的内容,以使名称尽可能不可读,但我没有亲身经历这样做。
答案 1 :(得分:3)
创建应用程序和创建商业软件业务是两回事。
在我的工作中,我们有一个在Ruby on Rails中开发的商业应用程序,它安装在客户端站点;没有应用混淆或加密。
在业务层面上还有很多事情:支持,定制,培训,认为他们对源代码做了些什么,这几乎是荒谬的。大多数网站都很幸运,如果他们可以节省周期来管理应用程序,更不用说开始沉浸在别人的代码库中。
现在说,我们并没有公开发布代码或任何东西,只是因为我们已经选择投资使应用程序更好并且客户做得更好而不是浪费时间来限制访问权限我们的申请。
答案 2 :(得分:2)
py2exe很棒,之前我已经使用过它,它可以很好地封装程序,因此它可以在其他计算机上运行,甚至是那些缺少python的计算机。就像Alex说的那样,它可以被反汇编,但C ++二进制文件也是如此。这只是一个人必须投入多少工作的问题。如果某人可以物理访问存储数据的计算机,则他们可以访问数据(并且代码和数据之间没有区别)。压缩它,加密它,编译它,那些只会减慢确定的速度。
实际上,如果你想让你的程序的源代码尽可能不可访问,你可能不应该看Python或Ruby。 C ++和其他一些反编译起来要困难得多,从而提供更多的默默无闻。你可以练习混淆的艺术,但即使这样也不会阻止有人试图窃取它(这不像你必须理解将它放在海盗湾的代码)。
答案 3 :(得分:1)
这里已经讨论过Python案例,一些答案也适用于Ruby。我强烈建议您阅读本网站上标题为How do I protect python code?的上一个问题。注意前三个答案。