这个Perl代码如何工作?

时间:2016-07-26 13:57:09

标签: perl deobfuscation

我找到了这个Perl程序:

''=~('(?{'.(']])@+}'^'-/@._]').'"'.('/<[*-_<+>?}{>]@}+@}]])@+}@<[*-_<+>?}{>]@^'^'`^=_^<]_[[]+[/,]_/]-/@._]/^=_^<]_[[]+[/,|').',$/})')

打印"Obfuscated Perl to print obfuscated Perl"

我想知道它是如何打印出来的。

1 个答案:

答案 0 :(得分:9)

正在充分利用bitwise string XOR operator ^

']])@+}' ^ '-/@._]'

评估为print

'/<[*-_<+>?}{>]@}+@}]])@+}@<[*-_<+>?}{>]@^' 
    ^ '`^=_^<]_[[]+[/,]_/]-/@._]/^=_^<]_[[]+[/,|'

评估为Obfuscated Perl to print obfuscated Perl",整个程序缩减为

$ perl -MO=Deparse ...
'' =~ m[(?{print "Obfuscated Perl to print obfuscated Perl",$/})];
... syntax OK

相关:Acme::EyeDrops