Joh*_*lla 26
有一些选项,如RubyScript2Exe或AllInOneRuby.然而,所有解释性语言的混淆者往往都有一个严重的缺陷:他们通常不了解更复杂的元编程技术.
也就是说,它们不一定能说明在完全不同的库中foo.send(:bar, ...)对bar方法的调用,或者eval("require %w{abc def ghi}")意味着需要三个不同的库.这些都是微不足道的例子 - 当你把method_missing它们混合在一起时,事情会变得复杂得多.
当遇到混淆这种代码,它会忠实地编制相应的说明,但它可能不知道还包括某些库或其他代码从其他地方.这可能会导致严重的问题,因为动态included或required在运行时将无法在静态链接的可执行文件中使用.
不幸的是,许多宝石和图书馆使用复杂的元编程技术.如果您尝试使用模糊处理并期望程序具有相同的行为,那么您可能会遇到麻烦.更糟糕的是,因为有间接的这么多的水平,如果在模糊的版本,则会出现一个错误,你可能永远不知道到底发生了什么或如何重现它.