Удалите запутанный код Javascript, чтобы он снова стал читаемым

#javascript #jquery #web

Вопрос:

Мне неприятно приводить это здесь, но, изучая запутывание кода JS, я закодировал свой код, а затем переписал исходный без какой-либо резервной копии 🙂 Ниже приведен мой запутанный код.

 var _0xf17f=["x28","x29","x64x69x76","x63x72x65x61x74x65x45x6Cx65x6Dx65x6Ex74","x69x64","x53x74x75x64x65x6Ex74x5Fx6Ex61x6Dx65","x73x74x75x64x65x6Ex74x5Fx64x6Fx62","x3Cx62x3Ex49x44x3Ax3Cx2Fx62x3E","x3Cx61x20x68x72x65x66x3Dx22x2Fx6Cx65x61x72x6Ex69x6Ex67x79x69x69x2Fx69x6Ex64x65x78x2Ex70x68x70x3Fx72x3Dx73x74x75x64x65x6Ex74x2Fx76x69x65x77x26x61x6Dx70x3Bx20x69x64x3D","x22x3E","x3Cx2Fx61x3E","x3Cx62x72x2Fx3E","x3Cx62x3Ex53x74x75x64x65x6Ex74x20x4Ex61x6Dx65x3Ax3Cx2Fx62x3E","x3Cx62x3Ex53x74x75x64x65x6Ex74x20x44x4Fx42x3Ax3Cx2Fx62x3E","x69x6Ex6Ex65x72x48x54x4Dx4C","x63x6Cx61x73x73","x76x69x65x77","x73x65x74x41x74x74x72x69x62x75x74x65","x70x72x65x70x65x6Ex64","x2Ex69x74x65x6Dx73","x66x69x6Ex64","x23x53x74x75x64x65x6Ex74x47x72x69x64x56x69x65x77x49x64"];function call_func(_0x41dcx2){var _0x41dcx3=eval(_0xf17f[0] _0x41dcx2 _0xf17f[1]);var _0x41dcx4=document[_0xf17f[3]](_0xf17f[2]);var _0x41dcx5=_0x41dcx3[_0xf17f[4]];var _0x41dcx6=_0x41dcx3[_0xf17f[5]];var _0x41dcx7=_0x41dcx3[_0xf17f[6]];var _0x41dcx8=_0xf17f[7];_0x41dcx8 =_0xf17f[8] _0x41dcx5 _0xf17f[9] _0x41dcx5 _0xf17f[10];_0x41dcx8 =_0xf17f[11];_0x41dcx8 =_0xf17f[12];_0x41dcx8 =_0x41dcx6;_0x41dcx8 =_0xf17f[11];_0x41dcx8 =_0xf17f[13];_0x41dcx8 =_0x41dcx7;_0x41dcx8 =_0xf17f[11];_0x41dcx4[_0xf17f[14]]=_0x41dcx8;_0x41dcx4[_0xf17f[17]](_0xf17f[15],_0xf17f[16]);$(_0xf17f[21])[_0xf17f[20]](_0xf17f[19])[_0xf17f[18]](_0x41dcx4);} ;
 

Может ли кто-нибудь указать мне URL-адрес или любой метод, чтобы сделать его читаемым. Я сделал это с этого веб-сайта, и они, по-видимому, предоставляют услуги по запутыванию в одну сторону, доступные на их веб-сайте…это был мой тестовый код во время обучения, поэтому было бы здорово, если бы кто-нибудь мог мне помочь.

Комментарии:

1. Извлеченный урок: используйте VCS , чтобы вы могли исправить свои ошибки.

2. Мне тоже неприятно, что ты приносишь это сюда. Это скорее не по теме в SO. (Для дальнейшего использования, однако, если бы вы использовали систему управления версиями, вы бы не оказались в такой ситуации.)

3. да … согласен.. Я всегда использую это, но так как это был учебный проект, поэтому я столкнулся с музыкой….:)

4. @millimoose это шестнадцатеричная кодировка на латинице-1, просто запустите ее через декодер. как я уже сказал, это руководство.

5. Привет, Деннис, это твой учитель по JS, я вижу, как тебе удалось решить свои задания и все еще так плохо сдавать экзамен. Мы должны пересмотреть тот диплом, который вы получили.

Ответ №1:

Вот новый автоматизированный инструмент, JSNice, чтобы попытаться деобфускировать/деминифицировать его. Инструмент даже пытается угадать имена переменных, что невероятно круто. (Для этой цели он добывает Javascript на github.)

http://www.jsnice.org

Ответ №2:

Попробуйте это: http://jsbeautifier.org/

Я протестировал ваш код и работал как можно лучше. =D

Ответ №3:

Вот он:

 function call_func(input) {
    var evaled = eval('('   input   ')');
    var newDiv = document.createElement('div');
    var id = evaled.id;
    var name = evaled.Student_name;
    var dob = evaled.student_dob;
    var html = '<b>ID:</b>';
    html  = '<a href="/learningyii/index.php?r=student/viewamp;amp; id='   id   '">'   id   '</a>';
    html  = '<br/>';
    html  = '<b>Student Name:</b>';
    html  = name;
    html  = '<br/>';
    html  = '<b>Student DOB:</b>';
    html  = dob;
    html  = '<br/>';
    newDiv.innerHTML = html;
    newDiv.setAttribute('class', 'view');
    $('#StudentGridViewId').find('.items').prepend(newDiv);
};
 

Комментарии:

1. Как вы его расшифровали? Я также случайно заменил свой исходный код на запутанный код

2. Что-то вроде упоминания в других ответах, jsnice или jsbeautifier. Затем я изучил его, чтобы выяснить, что он делает, и переименовал переменные.

3. Вау @TrevorDixon где ты научился декодировать запутывание? пожалуйста, дайте мне ссылку

4. Привет @Тревор Диксон, где я связался с тобой, чтобы сделать работу?

5. @MarzCT Я отправил тебе электронное письмо.

Ответ №4:

По первой ссылке в Google;

 function call_func(_0x41dcx2) {
 var _0x41dcx3 = eval('('   _0x41dcx2   ')');
 var _0x41dcx4 = document['createElement']('div');
 var _0x41dcx5 = _0x41dcx3['id'];
 var _0x41dcx6 = _0x41dcx3['Student_name'];
 var _0x41dcx7 = _0x41dcx3['student_dob'];
 var _0x41dcx8 = '<b>ID:</b>';
 _0x41dcx8  = '<a href="/learningyii/index.php?r=student/viewamp;amp; id='   _0x41dcx5   '">'   _0x41dcx5   '</a>';
 _0x41dcx8  = '<br/>';
 _0x41dcx8  = '<b>Student Name:</b>';
 _0x41dcx8  = _0x41dcx6;
 _0x41dcx8  = '<br/>';
 _0x41dcx8  = '<b>Student DOB:</b>';
 _0x41dcx8  = _0x41dcx7;
 _0x41dcx8  = '<br/>';
 _0x41dcx4['innerHTML'] = _0x41dcx8;
 _0x41dcx4['setAttribute']('class', 'view');
 $('#StudentGridViewId')['find']('.items')['prepend'](_0x41dcx4);
};
 

Это не вернет вас полностью к источнику, и это действительно невозможно, но это вытащит вас из ямы.

Комментарии:

1. Как ты это сделал? Я не смог найти эту первую ссылку в Google. Я перепробовал все ссылки и программы из Google, но ваша деобфускация лучше. Он подставил значения вместо индексов массива! Является ли это автоматической деобфускацией?

Ответ №5:

Я пробовал оба онлайн-jsbeautifier(jsbeautifier, jsnice), эти инструменты дали мне красивый js-код,

но не удалось скопировать для очень большого js (должно быть, ошибка, когда я копирую, скопированный буфер содержит только один символ ‘-‘).

Я обнаружил, что единственным рабочим решением было prettyjs:

http://www.thaoh.net/prettyjs/