Tiny Online Tools logoTiny Online ToolssearchПоиск инструментов…grid_viewВсе инструменты
Главнаяchevron_rightИнструменты обратной разработкиchevron_rightПомощник деобфускации JavaScriptПомощник деобфускации JavaScript

Помощник деобфускации JavaScript

Отменяет распространённые статические приёмы обфускации JavaScript: подстановку строк из массива, декодирование escape-последовательностей, свёртку констант, удаление мёртвых веток и замену квадратных скобок точками.

infoЭто отменяет только распространённые СТАТИЧЕСКИЕ приёмы обфускации: массивы строк, экранированные литералы, литеральную арифметику, заведомо истинные/ложные ветки и доступ через квадратные скобки. Код не выполняется, поэтому нельзя распаковать загрузчики на основе eval, разрешить условия, зависящие от времени выполнения, или отменить выравнивание потока управления сложнее тривиального литерального теста. Имена переменных остаются без изменений.Обфусцированный JavaScript

Похожие инструменты

Обфускатор JavaScript

Обфускатор JavaScript

Переименовывает локальные переменные, скрывает строковые литералы и запутывает поток управления в JavaScript — полностью в браузере, без загрузки на сервер.

Анализатор мёртвого кода JavaScript

Анализатор мёртвого кода JavaScript

Вставьте JS-бандл и найдите функции верхнего уровня, на которые нет ни одной статической ссылки в файле — эвристический анализ достижимости, а не гарантированный результат.

Инспектор JavaScript в PDF

Инспектор JavaScript в PDF

Находит все сценарии внутри PDF — действия документа, события страниц и аннотаций, расчёты полей форм — и показывает их, не запуская.

Обозреватель Source Map

Обозреватель Source Map

Загрузите файл .map и узнайте, какому исходному файлу, строке и имени соответствует любая строка и столбец сгенерированного кода.

Извлечь страницы PDF

Извлечь страницы PDF

Извлеките выбранные страницы из PDF-файла.

Декодер Base64

Декодер Base64

Декодирует текст, закодированный в Base64.

CSV-фильтр

CSV-фильтр

Фильтруйте строки в файлах CSV на основе критериев.

apps

Больше инструментов

Просмотрите нашу полную коллекцию бесплатных онлайн-инструментов.

Что отменяет этот инструмент

Многие обфускаторы JavaScript — включая тот, что есть на этом же сайте, — переписывают код с помощью небольшого набора механических, чисто статических преобразований: переносят каждый строковый литерал в один массив и заменяют каждое использование вызовом функции-геттера, экранируют обычные символы как последовательности \xNN или \uNNNN, разворачивают простую арифметику в эквивалентные, но более длинные выражения, оборачивают настоящий код в заведомо истинный или заведомо ложный if, переписывают a.b как a['b']. Этот инструмент отменяет ровно эти пять вещей:

  1. Подстановка массива строк — находит конструкцию вида var _s = ["foo", "bar"]; function _g(i){ return _s[i]; } и заменяет каждый вызов вида _g(0), у которого индекс — литеральное число, на реальную строку, а затем удаляет массив и функцию, если на них больше никто не ссылается.
  2. Декодирование escape-последовательностей — показывает \x48\x69 как Hi, а не в экранированном виде.
  3. Свёртка констант — превращает 1 + 2 в 3, "a" + "b" в "ab" и подобную литеральную арифметику, избегая всего, что потребовало бы догадок (например, деления на литеральный ноль).
  4. Удаление мёртвых ветокif (true) { A } else { B } становится просто A; while (false) {} исчезает полностью.
  5. Из квадратных скобок в точкуobj['name'] становится obj.name, если name — допустимый идентификатор.

Чего он не делает

Это статическое сопоставление шаблонов на уровне AST, а не универсальный деобфускатор. Он не выполняет никакого кода, поэтому не может распаковать загрузчик на основе eval, разрешить непрозрачный предикат, зависящий от значения во время выполнения, или отменить выравнивание потока управления сложнее тривиального литерального случая if/while/тернарного оператора выше. Имена переменных остаются без изменений — _0x1a2b так и останется _0x1a2b. Если файл не соответствует точно форме «массив строк + функция-геттер», этот этап просто сообщит о нуле подставленных вызовов, а не будет угадывать другой шаблон.

Как это работает

Код разбирается в AST с помощью acorn, обходится и переписывается вручную написанными преобразованиями, которые срабатывают только когда значение уже доказуемо является литералом, и заново генерируется с помощью astring. Ничего не отправляется на сервер: разбор и переписывание происходят полностью в вашем браузере.

Как пользоваться

Вставьте или введите JavaScript в редактор и запустите обработку. В сводке точно показано, сколько раз сработал каждый этап, — так видно, что изменилось, а что нет. Результат можно скопировать или скачать как файл .js.