Ruby混淆器

Luc*_*cas 22 ruby obfuscation

是否有ruby混淆器或"编译器"?

Joh*_*lla 26

有一些选项,如RubyScript2ExeAllInOneRuby.然而,所有解释性语言的混淆者往往都有一个严重的缺陷:他们通常不了解更复杂的元编程技术.

也就是说,它们不一定能说明在完全不同的库中foo.send(:bar, ...)bar方法的调用,或者eval("require %w{abc def ghi}")意味着需要三个不同的库.这些都是微不足道的例子 - 当你把method_missing它们混合在一起时,事情会变得复杂得多.

当遇到混淆这种代码,它会忠实地编制相应的说明,但它可能不知道还包括某些库或其他代码从其他地方.这可能会导致严重的问题,因为动态included或required在运行时将无法在静态链接的可执行文件中使用.

不幸的是,许多宝石和图书馆使用复杂的元编程技术.如果您尝试使用模糊处理并期望程序具有相同的行为,那么您可能会遇到麻烦.更糟糕的是,因为有间接的这么多的水平,如果在模糊的版本,则会出现一个错误,你可能永远不知道到底发生了什么或如何重现它.

  • 注意:这不是对RubyScript2Exe或AllInOneRuby能力的评论,只是对具有强大反射/内省功能的语言中混淆器不足的一般性评论. (8认同)