Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/owl4444/jsdeob-workbench
Статический анализАнализ КодаОбратная инженерияСкриптинг и автоматизацияОтладчикиАнализ вредоносных программАнализ Бинарных ФайловОбучение и Образование
GitHubowl4444/jsdeob-workbench

jsdeob-workbench

Визуально анализируйте обфусцированный JavaScript. Стройте цепочки преобразований, исследуйте изменения в AST, пишите переиспользуемые плагины для деобфускации.

РепозиторийСайт
118106 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

jsdeob-workbench

Визуальная рабочая среда для деобфускации JavaScript. Стройте цепочки преобразований, проходите по ним шаг за шагом, пишите собственные плагины.

img

img

Демонстрация на YouTube

  • https://www.youtube.com/watch?v=7zuqKoJT2BM
  • https://www.youtube.com/watch?v=bOVnPIfjoco

Что это такое?

Это приложение показывает абстрактное синтаксическое дерево (AST) программы на JavaScript. Идея возникла при анализе образца вредоносного ПО, связанного с obfuscatio.io, что в итоге привело меня к более глубокому изучению BabelJS для деобфускации. Если вы когда-нибудь пытались реверс-инжинирить обфусцированный JS (например, бандлы webpack, вывод obfuscator.io, упакованные образцы вредоносного ПО), вы знаете, насколько это болезненно. Этот инструмент позволяет:

  • Писать скрипты преобразований на основе BabelJS
  • Быстро просматривать AST через ASTViewer
  • Визуально объединять несколько преобразований в цепочку и получать сводку изменений.
  • Делиться плагинами с коллегами (вручную) и экспортировать конфигурации.
  • Писать шаблоны, которые можно повторно использовать в виде плагинов.
  • Сохранять проекты по мере анализа других JS-образцов.

Быстрый старт

root@kitploit:~
npm install
npm start
# Откройте http://localhost:3000

Вот и всё.

Интерфейс

Левая боковая панель — все доступные преобразования (встроенные + ваш рецепт в виде плагинов), включая цепочку рецептов. (Аналог Cyberchef)

Центр — редакторы ввода/вывода. Вставьте обфусцированный код слева и просматривайте преобразованный код справа.

Правые панели — просмотрщик AST, анализатор областей видимости, удобная сводка.

img

Анализ области видимости

BabelJS позволяет просматривать область видимости и привязки. Это особенно полезно для обнаружения неиспользуемых переменных, например. Этот вид также позволяет искать места, где переменная используется.

img

Написание преобразований

Нажмите кнопку + или клавиши Ctrl+N, чтобы открыть редактор скриптов. Преобразования — это просто JS-код с доступом к:

root@kitploit:~
// Доступные глобальные переменные:
ast        // Разобранное AST Babel
traverse   // Обход дерева: traverse({ Identifier(path) { ... } })
t          // Типы Babel: t.isStringLiteral(node), t.identifier('x')
config     // Пользовательская конфигурация из карточки рецепта
stats      // Отслеживание изменений: stats.replaced = 5
parser     // Парсинг кода: parser.parse('var x = 1')
generate   // Генерация кода: generate(node).code
run        // Вспомогательная функция eval: run('1+1') => 2 (ОПАСНО. ПРЕДПОЛАГАЕТСЯ ЗАПУСК НА ВАШЕЙ СОБСТВЕННОЙ МАШИНЕ В ПЕСОЧНИЦЕ)

Пример — удалить все строки "debug" (StringLiteral):

root@kitploit:~
// Следующие два параметра появятся в цепочке рецептов, как показано на следующем скриншоте
const targetValue = config.targetValue || 'debug';
const removeMatches = config.removeMatches !== false;

traverse({
  StringLiteral(path) {
    if (path.node.value === targetValue) {
      if (removeMatches) {
        path.remove();
        stats.removed = (stats.removed || 0) + 1;
      }
    }
  }
});

Вы можете:

  • Запустить этот скрипт напрямую (CTRL + ENTER) для быстрой проверки
  • Добавить написанный скрипт в цепочку рецептов без сохранения как плагин (как показано на скриншоте). Вы можете сохранить его позже
  • Сохранить как плагин, когда убедитесь, что он работает, и захотите поделиться им с другими.

На скриншоте ниже показано:

  1. Редактор скриптов (нажмите кнопку "новый" в верхнем левом углу или используйте сочетание Ctrl-E)
  2. После написания скрипта BabelJS добавьте его в цепочку рецептов.
  3. В рецепте с обнаруженными параметрами можно изменить поведение плагина.
  4. Редактор вывода показывает успешное преобразование.

img

Встроенные преобразования

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

ИмяЧто делает
BeautifyФорматирует код красиво
Constant Folding1 + 2 → 3, "a" + "b" → "ab"
Decode StringsДекодирует \x48\x65\x6c\x6c\x6f → "Hello"
Inline Array ValuesВстраивает простые обращения к элементам массива
Inline String ArrayВстраивает строковые массивы, используемые обфускаторами
Opaque Predicate RemovalУдаляет условия, которые всегда истинны/ложны
Remove CommentsУдаляет все комментарии из кода
Remove IIFEРазворачивает обёртки (function(){...})()
Remove Unused CodeУдаляет мёртвые переменные и функции
Simplify Literals!0 → true, void 0 → undefined

Плагины

Поместите свои собственные файлы .js в подпапки plugins/<category>/. Они появятся на боковой панели, сгруппированные по папкам.

img

Например:

  • Имя: берется из имени файла (Bracket-to-dot-notation.js → "Decode Strings")
  • Категория: имя подпапки (plugins/Utilities/ → категория "nyx")
root@kitploit:~
/**
 * Bracket to Dot Notation
 * Изменяет такие вещи, как console["log"] на console.log
 * 
 * Category: utilities
 */

// Редактор скриптов - Ctrl+Enter для запуска, Ctrl+E для закрытия
// Используйте traverse(visitor) для изменения AST
// Для доступа к типам Babel используйте 't'

traverse({
  MemberExpression(path) {
    if(path.node.computed === true){
      // это скобочная нотация
      
      prop = path.node.property
      if(t.isStringLiteral(prop)  &&
          /^[a-zA-Z_][a-zA-Z_0-9]*$/.test(prop.value)
       ){

        path.node.computed = false; // шаг 1

      // шаг 2: заменить литерал на идентификатор
        path.node.property = t.identifier(prop.value)
      

      }
    }
  }

});

Есть два способа добавить параметры:

  1. (Этот способ имеет приоритет и настоятельно рекомендуется) Следуя этому формату в коде, редактор скриптов попытается создать два параметра (targetValue и removeMatches):
root@kitploit:~
const targetValue = config.targetValue || 'debug';
const removeMatches = config.removeMatches !== false;
  1. Если какие-то параметры были пропущены из-за граничных случаев, сохранение в качестве плагина позволяет добавить недостающие параметры.

img

Основная сводка

Включает:

  • Время выполнения каждого плагина
  • Статистику изменения размера кода
  • График для визуализации изменений

img

Горячие клавиши

КлавишаДействие
Ctrl+EПереключение редактора скриптов
Ctrl+Shift+EПереключение панели eval (ОПАСНО)
Ctrl+SСохранение проекта

Сборка автономного исполняемого файла

ОБРАТИТЕ ВНИМАНИЕ, ЧТО АВТОНОМНАЯ СБОРКА МОЖЕТ ИМЕТЬ ПРОБЛЕМЫ ПРИ БОЛЬШОМ КОЛИЧЕСТВЕ ВЛОЖЕННЫХ УЗЛОВ. ОБХОДНОЙ ПУТЬ МОЖЕТ НЕ ВСЕГДА РАБОТАТЬ.

Чтобы собрать с помощью npm, используйте следующее:

root@kitploit:~
npm run build        # Только для Windows

Вывод помещается в dist/. Скопируйте папку plugins/ рядом с exe, если хотите использовать свои собственные преобразования.

Проблемы с размером стека

Глубоко вложенный код (например, JSFuck) может переполнить стек. Сборочный скрипт пытается автоматически увеличить его в Windows. Если возникают переполнения стека, попробуйте запустить из исходников с помощью npm start (использует --stack-size=65536).

Я не разобрался, как увеличить размер стека при сборке автономного исполняемого файла. Пожалуйста, дайте мне знать, если вы знаете, как это сделать!

Благодарности

Создано с помощью:

  • Babel — парсинг AST и преобразования
  • Monaco Editor — редактор кода
  • Express — серверная часть

img

Вопросы? Проблемы? Откройте issue на GitHub.

Скачать инструмент