Что такое деобфускация Javascript? Все, что Вам нужно знать

Что такое деобфускация 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 ❤️


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE