Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
var x = $E[$d.$fJ]($j);
var s = x.replace(/\\u00([0-9a-fA-F]{2})/g, function() {
return String.fromCharCode(parseInt(arguments[1], 16));
});
s = s.replace(/\\x([0-9a-fA-F]{2})/g, function() {
return String.fromCharCode(parseInt(arguments[1], 16));
});
console.log(s);
<script type="text/javascript">
window.eval = function(code)
{
console.log(code); // or alert(code);
}
</script>
new Function('','alert(document.cookie)')();Только обращения к самому window.Function'у не было, поэтому его переопределение ничего не дало. Зато есть, например, такой вариант достучаться до негоnew alert.constructor('','alert(document.cookie)')();, который и использовался в моём случае. Мне оставалось только переопределить Function.prototype.constructor, и желанный код любезно отобразился в консоли.Раскодируем поэтапно скрипт воспользовавшись обратными функциями:
Далее уберем 16-ричную систему функцией unescape

Расшифровка вредоносного JavaScript