#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.)
Ответ №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: