2

我正在评估从 PHP 迁移到 Ruby(Ruby on Rails)。我最关心的一个问题是项目加密。

目前在 PHP 中,我使用 Source Guardian 在将项目提供给客户之前对其进行加密。

然而,对于 Ruby,我发现的唯一选择是 ruby​​encoder.com(与 PHP 源 Guardian 相同的公司)。有没有人试过这个软件并有第一手经验?

有没有其他软件?

Ruby 中是否有任何本地方式来加密项目?

4

2 回答 2

2

您应该知道这并不能真正保护您的代码。在某些时候,代码必须由 Ruby 的 VM 执行(假设您使用的是 1.9.x)。除非经过修改,否则 VM 本身只能理解未加密形式的指令。

这意味着在执行加密代码之前,必须将其转换回其原始形式。非常渴望阅读您的源代码的人可以通过调试 Ruby 进程并等待解密发生来做到这一点。

即使只是从中获得的字节码指令,也可以从字节码解释中重构出可读性很强的源代码,这里是 Java 的一个示例,但 Ruby 也可以实现类似的事情。

代码混淆可能更符合您的要求,但对于 Ruby 代码来说,它也是一个非常危险的选择:它可能会破坏复杂的元编程特性。

我从来都不是 DRM 措施的朋友,所以我可能在这里很固执……但你真的、真的相信你需要这些功能吗?

于 2012-06-04T14:49:32.017 回答
1

如果您可以使用 Rubinius 执行代码,则有一种简单的处理方法(JRuby 也可能存在类似的解决方案,因为它在 JVM 上运行):使用 Rubinius,您可以将源代码编译为字节码并仅发送二进制代码发送给客户端。该代码可以在目标系统上执行,而不会泄露任何源代码。有关详细说明和注意事项,请参阅 rubinius 主页上的此博客文章:http ://rubini.us/2011/03/17/running-ruby-with-no-ruby/

于 2012-06-11T12:21:48.680 回答