隐藏一点Ruby代码的任何简单方法?

时间:2011-08-11 01:11:53

标签: ruby obfuscation copy-protection

我寻求一种解决方案,使Ruby代码更难以理解。

事实上,我对完全混淆代码感兴趣,但得到“一行* .rb文件”或类似"Pretty Numbers" on this link之类的东西应该受到赞赏。

在发布之前,我已经过了几个小时才找到解决方案但是无法获得任何脚本,宝石或程序来转换一个简单易读的代码,而这些代码对于“假人”来说更难以理解。

试图以these ones为例,但任何人都可以轻松完成整个工作。

3 个答案:

答案 0 :(得分:3)

将代码封装在字符串

string = "1+2; sneaky('something'); 'will be hidden'"

将字符串封装在数组中

array = [string]

将数组的内容打包成二进制序列

 array.pack('u') #=> "?<'50``\n..."

复制&amp;在代码中粘贴二进制序列并对其进行评估。

eval("?<'50``\n...".unpack('u').first) #=> 'will be hidden'

答案 1 :(得分:1)

  • 替换单字母名称的所有变量,方法或类名称,就像abc一样。
  • 你知道DRY吗?算了吧。重复部分代码,使其更大,更难理解。尝试以多种方式编写相同的代码。
  • 在大表达式或计算上转换简单整数和字符串。
  • 定义额外函数并在真实定义之前使用undef或定义现有函数。
  • 添加在代码之间不执行任何操作的内容,或执行某些操作的代码,然后撤消它。
  • 将部分代码移到之前的某处,然后使用heredoc将此代码转换为字符串。然后执行它应该在的位置。
  • 将所有内容合并为一行并忘记缩进。在指令中间添加新行后,尝试使用代码或类似的东西绘制一个矩形。
  • 测试代码。如果它停止工作,我很抱歉,你将永远无法再读它。

无论如何,只是弄乱代码。但它必须手动完成。

答案 2 :(得分:0)

拼写错误的变量和方法名称。不要wast个字符。