perl - 这个混淆的 Perl 代码是如何工作的?

标签 perl obfuscation

这段代码是如何工作的?

#!/usr/bin/perl

$i=4;$|=@f=map{("!"x$i++)."K$_^\x{0e}"}
"BQI!\\","BQI\\","BQI","BQ","B","";push
@f,reverse@f[1..5];@f=map{join"",undef,
map{chr(ord()-1)}split""}@f;{;$f=shift@
f;print$f;push@f,$f;select undef,undef,
undef,.25;redo;last;exit;print or die;}

最佳答案

让我们先把这个通过 perltidy

$i = 5;
$| = @f = map { ("!" x $i++) . "9$_*\x{0e}" } ">>>E!)", ">>>E)", ">>>E", ">>>", ">>", ">", "";
push @f, reverse @f[ 1..5 ];
@f = map {
    join "",
      map { chr(ord() - 1) }
      split //
} @f;
{
    $f = shift @f;
    print $f;
    push @f, $f;
    select undef, undef, undef, .25;
    redo;
    last;
    exit;
    print or die;
}

第一行很明显。

第二行列出一个列表 ">>>E!)", ">>>E)", ">>>E", ">>>", ">>", ">", "" , 并将它们全部分隔为等长,并附加一个星号和一个“移出”(回车后的字符)。

第三行将项目 5 到 1(按该顺序)附加到该列表中,因此它将是 ">>>E!)", ">>>E)", ">>>E", ">>>", ">>", ">", "", ">", ">>", ">>>", ">>>E" .

map 将所有字符减一,从而创建像 8===D () 这样的元素。 .

第二个循环只是每 0.25 秒在循环中打印列表中的元素。回车使它们相互覆盖,从而看到动画。最后几行永远不会到达,因此是假的。

关于perl - 这个混淆的 Perl 代码是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2319770/

相关文章:

perl - Perl 中有哪些语法糖可以减少 l/rvalue 运算符与 if 语句的代码?

Java SecurityManager - 在运行时修改之前保护代码

javascript - AngularJS 混淆

c++ - 从二进制 dll 文件中删除 C++ 类名

Javascript 快速数组声明

perl - 当受测者在 Perl 中使用 TAP 失败退出时,是否可以测试预期错误?

regex - 匹配包含十六进制数字的字符串中第 n 个出现的数字

perl - libapreq2 : libtool: link: CURRENT `' must be a nonnegative integer

jakarta-ee - JAVA EE项目的代码混淆

vb.net - .NET 混淆 [SmartAssembly]