Uma*_*air 8 perl deobfuscation
我找到了这个Perl程序:
''=~('(?{'.(']])@+}'^'-/@._]').'"'.('/<[*-_<+>?}{>]@}+@}]])@+}@<[*-_<+>?}{>]@^'^'`^=_^<]_[[]+[/,]_/]-/@._]/^=_^<]_[[]+[/,|').',$/})')
Run Code Online (Sandbox Code Playgroud)
它打印 "Obfuscated Perl to print obfuscated Perl"
我想知道它是如何打印出来的.
它正在充分利用按位串XOR运算符 ^.
']])@+}' ^ '-/@._]'
Run Code Online (Sandbox Code Playgroud)
评估到print,
'/<[*-_<+>?}{>]@}+@}]])@+}@<[*-_<+>?}{>]@^'
^ '`^=_^<]_[[]+[/,]_/]-/@._]/^=_^<]_[[]+[/,|'
Run Code Online (Sandbox Code Playgroud)
评估到Obfuscated Perl to print obfuscated Perl",整个程序减少到
$ perl -MO=Deparse ...
'' =~ m[(?{print "Obfuscated Perl to print obfuscated Perl",$/})];
... syntax OK
Run Code Online (Sandbox Code Playgroud)
有关: Acme::EyeDrops