buloshnik
@buloshnik
мужик

Как раскодировать JS код?

Здравствуйте, столкнулся с зашифрованным кодом, который не могу расшифровать. В интернете ничего толкового найти не могу. Может есть какие-то сервисы или расширения для браузеров? Заранее благодарен.
var _0x46f2=["\x3C","\x69\x6E\x64\x65\x78\x4F\x66","\x73\x70\x6C\x69\x74","\x6C\x65\x6E\x67\x74\x68","\x3E","\x73\x75\x62\x73\x74\x72\x69\x6E\x67","","\x6A\x6F\x69\x6E","\x63\x68\x61\x72\x41\x74","\x20","\x2E\x2E\x2E","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64","\x69\x6D\x67","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x73\x42\x79\x54\x61\x67\x4E\x61\x6D\x65","\x79\x65\x73","\x3C\x73\x70\x61\x6E\x20\x73\x74\x79\x6C\x65\x3D\x22\x66\x6C\x6F\x61\x74\x3A\x6C\x65\x66\x74\x3B\x20\x70\x61\x64\x64\x69\x6E\x67\x3A\x30\x70\x78\x20\x31\x30\x70\x78\x20\x35\x70\x78\x20\x30\x70\x78\x3B\x22\x3E\x3C\x69\x6D\x67\x20\x73\x72\x63\x3D\x22","\x73\x72\x63","\x22\x20\x77\x69\x64\x74\x68\x3D\x22","\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\x3D\x22","\x70\x78\x22\x2F\x3E\x3C\x2F\x73\x70\x61\x6E\x3E","\x3C\x64\x69\x76\x3E","\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C","\x3C\x2F\x64\x69\x76\x3E","\x3C\x61\x20\x68\x72\x65\x66\x3D\x27\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x77\x61\x79\x32\x74\x68\x65\x6D\x65\x73\x2E\x63\x6F\x6D\x2F\x27\x3E\x57\x61\x79\x32\x74\x68\x65\x6D\x65\x73\x3C\x2F\x61\x3E","\x68\x74\x6D\x6C","\x23\x6D\x79\x63\x6F\x6E\x74\x65\x6E\x74","\x23\x6D\x79\x63\x6F\x6E\x74\x65\x6E\x74\x3A\x76\x69\x73\x69\x62\x6C\x65","\x68\x72\x65\x66","\x6C\x6F\x63\x61\x74\x69\x6F\x6E","\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x77\x61\x79\x32\x74\x68\x65\x6D\x65\x73\x2E\x63\x6F\x6D\x2F","\x72\x65\x61\x64\x79"];function removeHtmlTag(_0x8930x2,_0x8930x3){if(_0x8930x2[_0x46f2[1]](_0x46f2[0])!=-1){var _0x8930x4=_0x8930x2[_0x46f2[2]](_0x46f2[0]);for(var _0x8930x5=0;_0x8930x5<_0x8930x4[_0x46f2[3]];_0x8930x5++){if(_0x8930x4[_0x8930x5][_0x46f2[1]](_0x46f2[4])!=-1){_0x8930x4[_0x8930x5]=_0x8930x4[_0x8930x5][_0x46f2[5]](_0x8930x4[_0x8930x5][_0x46f2[1]](_0x46f2[4])+1,_0x8930x4[_0x8930x5][_0x46f2[3]]);} ;} ;_0x8930x2=_0x8930x4[_0x46f2[7]](_0x46f2[6]);} ;_0x8930x3=(_0x8930x3<_0x8930x2[_0x46f2[3]]-1)?_0x8930x3:_0x8930x2[_0x46f2[3]]-2;while(_0x8930x2[_0x46f2[8]](_0x8930x3-1)!=_0x46f2[9]&&_0x8930x2[_0x46f2[1]](_0x46f2[9],_0x8930x3)!=-1){_0x8930x3++;} ;_0x8930x2=_0x8930x2[_0x46f2[5]](0,_0x8930x3-1);return _0x8930x2+_0x46f2[10];} ;function createSummaryAndThumb(_0x8930x7){var _0x8930x8=document[_0x46f2[11]](_0x8930x7);var _0x8930x9=_0x46f2[6];var _0x8930xa=_0x8930x8[_0x46f2[13]](_0x46f2[12]);var _0x8930xb=summary_noimg;if(thumbnail_mode==_0x46f2[14]){if(_0x8930xa[_0x46f2[3]]>=1){_0x8930x9=_0x46f2[15]+_0x8930xa[0][_0x46f2[16]]+_0x46f2[17]+img_thumb_width+_0x46f2[18]+img_thumb_height+_0x46f2[19];_0x8930xb=summary_img;} ;} ;var _0x8930xc=_0x8930x9+_0x46f2[20]+removeHtmlTag(_0x8930x8[_0x46f2[21]],_0x8930xb)+_0x46f2[22];_0x8930x8[_0x46f2[21]]=_0x8930xc;} ;$(document)[_0x46f2[30]](function (){$(_0x46f2[25])[_0x46f2[24]](_0x46f2[23]);setInterval(function (){if(!$(_0x46f2[26])[_0x46f2[3]]){window[_0x46f2[28]][_0x46f2[27]]=_0x46f2[29];} ;} ,3000);} );
  • Вопрос задан
  • 16328 просмотров
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
ну... для начала приведите к нормальному виду массив с эллементами. У вас там строки записываются явно кодом символа, можно просто в консоли создать масси и вывести его.
var parts = ["<", "indexOf", "split", "length", ">", "substring", "", "join", "charAt", " ", "...", "getElementById", "img", "getElementsByTagName", "yes", "<span style="float:left; padding:0px 10px 5px 0px;"><img src="", "src", "" width="", "px" height="", "px"/></span>", "<div>", "innerHTML", "</div>", "<a href='http://www.way2themes.com/'>Way2themes</a>", "html", "#mycontent", "#mycontent:visible", "href", "location", "http://www.way2themes.com/", "ready"];


затем замените обращения к эллементам массива _0x46f2 на собственно значение, и получите свой код. Нужно будет только переменные по переименовывать. Большую часть работы можно регурярками выполнить.

"тут исходник, лень копипастить"code.replace(/\_0x46f2\[(\d+)\]/g, function (matched, idx) {
    return '\''+_0x46f2[idx]+'\'';
});


на выходе получаем (если прогнать через beautifier)
function removeHtmlTag(_0x8930x2, _0x8930x3) {
    if (_0x8930x2['indexOf']('<') != -1) {
        var _0x8930x4 = _0x8930x2['split']('<');
        for (var _0x8930x5 = 0; _0x8930x5 < _0x8930x4['length']; _0x8930x5++) {
            if (_0x8930x4[_0x8930x5]['indexOf']('>') != -1) {
                _0x8930x4[_0x8930x5] = _0x8930x4[_0x8930x5]['substring'](_0x8930x4[_0x8930x5]['indexOf']('>') + 1, _0x8930x4[_0x8930x5]['length']);
            };
        };
        _0x8930x2 = _0x8930x4['join']('');
    };
    _0x8930x3 = (_0x8930x3 < _0x8930x2['length'] - 1) ? _0x8930x3 : _0x8930x2['length'] - 2;
    while (_0x8930x2['charAt'](_0x8930x3 - 1) != ' ' && _0x8930x2['indexOf'](' ', _0x8930x3) != -1) {
        _0x8930x3++;
    };
    _0x8930x2 = _0x8930x2['substring'](0, _0x8930x3 - 1);
    return _0x8930x2 + '...';
};

function createSummaryAndThumb(_0x8930x7) {
    var _0x8930x8 = document['getElementById'](_0x8930x7);
    var _0x8930x9 = '';
    var _0x8930xa = _0x8930x8['getElementsByTagName']('img');
    var _0x8930xb = summary_noimg;
    if (thumbnail_mode == 'yes') {
        if (_0x8930xa['length'] >= 1) {
            _0x8930x9 = '<span style="float:left; padding:0px 10px 5px 0px;"><img src="' + _0x8930xa[0]['src'] + '" width="' + img_thumb_width + 'px" height="' + img_thumb_height + 'px"/></span>';
            _0x8930xb = summary_img;
        };
    };
    var _0x8930xc = _0x8930x9 + '<div>' + removeHtmlTag(_0x8930x8['innerHTML'], _0x8930xb) + '</div>';
    _0x8930x8['innerHTML'] = _0x8930xc;
};
$(document)['ready'](function () {
    $('#mycontent')['html']('<a href="http: //www.way2themes.com/">Way2themes</a>');
    setInterval(function () {
        if (!$('#mycontent:visible')['length']) {
            window['location']['href'] = 'http://www.way2themes.com/';
        };
    }, 3000);
});


дальше дело за малым, нужно переменные попереименовывать и слегка отрефакторить код.
Ответ написан
Screatch
@Screatch
Ruby On Rails front-end developer
Для автоматизации процесса, есть замечательный сервис:
jsbeautifier.org

Однако как отметил предыдщий комментатор, название переменных придётся всё равно переименовывать т.к. они были уже заведомо изменены обфускатором.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы