Jim*_*imB 7 perl deobfuscation
我有一些已被"漂白"的perl文件(不知道它是来自ACME :: Bleach,还是类似的东西).我不太熟悉perl,我想了解启动文件的单行程序是如何解码后面的空格的:
$_=<<'';y;\r\n;;d;$_=pack'b*',$_;$_=eval;$@&&die$@;$_
Run Code Online (Sandbox Code Playgroud)
文件的其余部分是空白字符,文件本身是可执行的(它放在/ bin目录中).
[解决方案],感谢@JB.
这pack部分似乎是最复杂的,我花了一段时间才注意到发生了什么.Pack 只接受每8个字符的LSB ,并将其作为二进制文件中的big-endian字符解压缩.标签因此变为'0',空格变为'1'.
'\t\t \t ' => '#'
in binary:
00001001 00001001 00100000 00100000 00100000 00001001 00100000 0100000
every LSB:
1 1 0 0 0 1 0 0
convert from from big-endian format:
0b00100011 == 35 == ord('#')
Run Code Online (Sandbox Code Playgroud)
JB.*_*JB. 10
$_ = << ''; 将剩余的文件读入累加器.y;\r\n;;d; 剥离回车和换行.$_ = pack 'b*', $_;首先将字符转换为$_LSB中的位.$_ = eval;$_作为Perl代码执行.$@ && die $@; $_ 正常处理异常和返回代码.| 归档时间: |
|
| 查看次数: |
1043 次 |
| 最近记录: |