Что такое деобфускация Javascript? Все, что Вам нужно знать
30 апреля 2024 г.Введение:
Деобфускация кода — важный навык, которому нужно научиться, если мы хотим овладеть навыками анализа кода и обратного проектирования. Обфускация — это метод, используемый для того, чтобы сделать сценарий более трудным для чтения человеком, но позволяет ему функционировать так же с технической точки зрения, хотя производительность может быть ниже. В этой статье объясняется, что такое деобфускация кода, причины ее использования, а также ее потенциальные преимущества и недостатки.
Деобфусцированный код:
Обычно это достигается автоматически с помощью инструмента обфускации, который принимает код в качестве входных данных и пытается переписать код таким образом, чтобы его было гораздо труднее читать, в зависимости от его конструкции. Например, рассмотрим следующие два фрагменты кода и их вывод:
Фрагмент 1:
console.log("Hello by Dhanush")
Вывод фрагмента 1:
Hello by Dhanush
Фрагмент 2:
eval(
(function (p, a, c, k, e, d) {
e = function (c) {
return c;
};
if (!"".replace(/^/, String)) {
while (c--) {
d[c] = k[c] || c;
}
k = [
function (e) {
return d[e];
},
];
e = function () {
return "w+";
};
c = 1;
}
while (c--) {
if (k[c]) {
p = p.replace(new RegExp("b" + e(c) + "b", "g"), k[c]);
}
}
return p;
})('0.1("2 3 4")', 5, 5, "console|log|Hello|by|Dhanush".split("|"), 0, {}),
);
Вывод фрагмента 2:
Hello by Dhanush
Фрагмент 1 содержит простой скрипт JavaScript. Он записывает строку «Привет от Дхануша» на консоль с помощью функции console.log(). В JavaScript это типичный метод вывода сообщений. Более продвинутый фрагмент кода, найденный во фрагменте 2, использует функцию eval() для запуска функции JavaScript, которая генерируется динамически. Вот краткое изложение того, что происходит:
* Поскольку код генерируется и менее удобочитаем, он запутан и труден для интерпретации.
* Функция с аргументами p, a, c, k, e и d выполняется функцией eval(). Они служат параметрами функции.
* Функция преобразует входную строку "0.1("2 3 4")" в оператор console.log("Hello by Dhanush"), выполняя подстановку строк и манипуляции с использованием регулярных выражений (RegExp).
* Различные разделы исходной строки динамически заменяются соответствующими значениями кода.
* Затем запускается полученный код JavaScript.
Обратный инжиниринг: деобфускация:
Практика обратного проектирования или расшифровки кода, который был намеренно запутан или усложнён для понимания, называется деобфускацией. Деобфускация повлечет за собой преобразование запутанного кода во втором фрагменте кода обратно в исходную, более читаемую форму. Во втором фрагменте, чтобы его было трудно понять на первый взгляд, код намеренно запутан.
Здесь стратегия запутывания влечет за собой замену осмысленных имен и кодов переменных на непонятные и запутанные рассуждения. Этот тип обфускации известен как «упаковка», которую обычно можно узнать по шести аргументам функции, используемым в исходной функции «function(p,a,c,k,e,d)». Существует также множество онлайн-инструментов для запутывания кода JavaScript, например
* https://beautifytools.com/javascript-obfuscator.php * https://obfuscator.io/
и многое другое.
Причины деобфускации кода:
- Защита интеллектуальной собственности. Затрудняя конкурентам или неавторизованным пользователям задачу обратного проектирования и копирования программного обеспечения, обфускация может использоваться для защиты интеллектуальной собственности, такой как алгоритмы, проприетарная бизнес-логика, или уникальный код.
* Безопасность. Обфускацию кода иногда можно использовать для повышения безопасности путем сокрытия важных данных, включая ключи шифрования или методы аутентификации. Из-за этого злоумышленникам становится сложнее воспользоваться недостатками или получить несанкционированный доступ.
* Принудительное соблюдение лицензий. Из-за обфускации пользователям сложнее вмешиваться в проверки лицензий или снимать ограничения с пробных версий программного обеспечения, что помогает обеспечить соблюдение лицензионных соглашений на программное обеспечение.
* Защита от анализа вредоносного ПО. Чтобы усложнить анализ и обнаружение вредоносного кода исследователям безопасности, антивирусному программному обеспечению и аналитикам угроз, создатели вредоносного ПО иногда запутывают свой код.
Преимущества деобфускации кода:
- Предотвращает случайное обратное проектирование.
- В некоторых случаях добавляет вторую степень безопасности.
- Защищает деликатные алгоритмы и код.
Недостатки деобфускации кода:
- Не обеспечивает непреодолимой защиты от решительных нападающих.
- Усложняет поддержку и отладку кода.
- Иногда может повысить производительность.
Вывод:
Обфускацию кода следует использовать с осторожностью и в сочетании с другими мерами безопасности, такими как шифрование, контроль доступа и регулярные проверки безопасности. Чаще всего он используется в ситуациях, когда защита информации или сохранение интеллектуальной собственности являются основными приоритетами.
Спасибо за прочтение, поделитесь этой статьей в социальных сетях, если она оказалась для вас полезной
Подключайтесь 👉 Twitter, Темы, Instagram, GitHub, YouTube , Discord ❤️
Оригинал