JavaScript-деобфускатор

Вставьте кусок обфусцированного JavaScript, строки в шестнадцатеричном коде, односимвольные имена переменных, цикл-декодер в начале, и инструмент снимает слой за слоем: разэкранирует строки, встраивает массив подстановки, переименовывает переменные в читаемые заполнители, уплощает тривиальные обёртки и приводит результат в порядок. Удобно для анализа подозрительных фрагментов, которые вы вытащили со страницы или из вставленной ссылки на Pastebin.

Как деобфусцировать JavaScript

  1. 1

    Вставьте зашифрованный исходный код

    Минифицированный, сжатый или вычисленный результат работы инструментов в стиле `javascript-obfuscator.io`.

  2. 2

    Пусть парсер проанализирует его.

    Массивы строк декодируются, числовые последовательности обрабатываются, а ветви с неэффективным кодом удаляются.

  3. 3

    Применить переименование

    Переменные с одной буквой `a`/`b`/`c` переименованы в `var1`, `var2` и т. д. это читаемые псевдонимы, не обязательно имеющие смысл.

  4. 4

    Приведите код в порядок

    Расставьте отступы, добавьте переносы строк и получите код, который действительно можно прочитать и осмыслить.

Приёмы, которые обращает деобфускатор

Обфускация Обратное преобразование
Строковые литералы с шестнадцатеричным экранированием Декодировать \x48\x69 обратно в "Hi"
Идентификаторы, закодированные по стандарту Unicode \u006E\u0061\u006D\u0065 -> name
Массив строк + функция декодирования Встроить массив, вызвать декодер на этапе разбора
Свёртка числовых констант 0x1F3 + 5 -> 504
Обёртки eval(...) Поднять внутренний код на верхний уровень
Уплощение потока управления (машина состояний) Обнаружить конструкцию switch-case и восстановить поток
Мёртвый код / бесполезные тернарные выражения Удалить ветви, которые никогда не выполняются
Имена в стиле _0x1a2b3c() Заменить на нарастающие var1, var2

Ограничения: то, чего инструмент не может делать

  • Восстановление исходных имён переменных. После переименования userEmail в a ни один инструмент не сможет угадать его снова; вы получаете читаемую структуру, а не первоначальную семантику.
  • Распаковка пользовательских виртуализаторов. Тяжёлые коммерческие средства запутывания кода (JScrambler, корпоративные версии Obfuscator.io) внедряют собственную виртуальную машину, интерпретирующую байт-код; для их обхода требуется ручная обратная разработка.
  • Выполнение произвольного кода. Деобфускатор статически вычисляет чистые выражения; он не запрашивает удалённые ресурсы, не создаёт элементы DOM и не обращается к сети.

Типичные сценарии использования

  • Исследование безопасности: разбор подозрительного скрипта, пришедшего по электронной почте или отданного скомпрометированным CDN.
  • Археология кода: восстановление устаревшего кода, единственным сохранившимся артефактом которого остался минифицированный бандл.
  • Обучение: понимание того, что на самом деле делает запутывание учебного уровня под капотом.

Безопасность и этика

Никогда не запускайте ненадёжный JavaScript во вкладке браузера, где вы вошли во что-то важное: такой код может считывать файлы cookie, вызывать внутренние API и похищать состояние. Сам деобфускатор работает с исходным кодом как с текстом; он не выполняет код, который вы вставляете.

Деобфусцируйте только тот код, который вам разрешено анализировать. Обратная инженерия лицензированного программного обеспечения может быть ограничена в вашей юрисдикции.

Часто задаваемые вопросы

Нет. Как только обфускатор переименует userEmail в _0x1a2b3c, исходное имя теряется. Деобфускатор предоставляет читаемые заменители (var1, var2) и правильную структуру, но не восстанавливает первоначальные семантические названия.

Нет. Он анализирует код в виде дерева структурных элементов (AST) и применяет статические преобразования. Чистые выражения (например, 0x1F3 + 5) сворачиваются, однако ничто не затрагивает сеть, cookie или DOM.

Да, однако результат обработки с помощью инструмента bundler минимизируется, а не намеренно затуманивается; в результате получается просто улучшенный код с восстановленными модульными оболочками. Если карты исходного кода доступны отдельно, они позволяют использовать значительно более понятные названия файлов.

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

Сопутствующие инструменты

Смешивание цветов

Смешайте два HEX-цвета в 2-20 равномерных образцов. Каждый промежуточный цвет показывается как HEX-код в верхнем регистре, включая оба края.

Генератор вымышленных телефонных номеров

Создавайте до 50 вымышленных номеров из официально зарезервированных диапазонов пяти стран.

Генератор конфигурации webpack

Создайте webpack.config.js для webpack 5 по короткой форме: задайте entry, папку вывода и режим, затем включите TypeScript, Babel, загрузчик CSS, HtmlWebpackPlugin и сервер разработки.

Генератор бейджей README

Создавайте бейджи shields.io для файлов README на GitHub: статус сборки, версия, лицензия, число загрузок и покрытие кода. Просмотрите и скопируйте фрагмент Markdown.

Генератор случайных букв

Генерируйте случайные буквы A-Z. Выберите количество, верхний или нижний регистр либо смешанный вариант для игр, заданий и уроков.

Генератор случайных адресов

Создавайте 1–20 похожих на адрес записей для макетов и тестов в трёх упрощённых форматах.

Инструмент доступен на других языках