Ruby 红宝石模糊器

Ruby 红宝石模糊器,ruby,obfuscation,Ruby,Obfuscation,有ruby模糊器或“编译器”吗?RubyScript2Exe-有几个选项,比如或。然而,所有解释语言的混淆器都有一个严重的缺陷:它们通常不理解更复杂的元编程技术 也就是说,他们不一定能判断像foo.send(:bar,…)这样的东西是在一个完全不同的库中调用bar方法,或者eval(“require%w{abc def ghi}”)意味着需要三个不同的库。这些都是微不足道的例子——当你把方法\u missing及其类似的东西放到混合中时,事情会变得复杂得多 当混淆器遇到这类代码时,它会尽职尽责地

有ruby模糊器或“编译器”吗?

RubyScript2Exe-

有几个选项,比如或。然而,所有解释语言的混淆器都有一个严重的缺陷:它们通常不理解更复杂的元编程技术

也就是说,他们不一定能判断像
foo.send(:bar,…)
这样的东西是在一个完全不同的库中调用
bar
方法,或者
eval(“require%w{abc def ghi}”)
意味着需要三个不同的库。这些都是微不足道的例子——当你把
方法\u missing
及其类似的东西放到混合中时,事情会变得复杂得多

当混淆器遇到这类代码时,它会尽职尽责地编译相应的指令,但它可能不知道还包括某些库或其他地方的代码。这可能会导致严重的问题,因为动态
include
d或
require
d在运行时在静态链接的可执行文件中不可用


不幸的是,许多gem和库使用复杂的元编程技术。如果您试图使用模糊处理,并期望您的程序具有相同的行为,您可能会在这里遇到麻烦。更糟糕的是,由于存在如此多的间接寻址级别,如果在模糊版本中出现错误,您可能永远不知道到底发生了什么或如何复制它。

取决于您尝试执行的操作,有一个Gem允许您从Ruby脚本创建一个C扩展,然后可以在Ruby应用程序中作为一个需求使用。它被称为ruby2cext。它会将所有代码混淆成C语言,并且您可能需要。因此,在单独的Ruby脚本中,它将像普通Ruby脚本一样工作。

注意:这不是对RubyScript 2Exe或AllInOneRuby的功能的评论,仅对具有强大反射/内省功能的语言中模糊处理程序的不足进行一般性评论。该项目看起来不错。。。这是一个皮蒂它被遗弃了:(编辑: