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

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

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

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

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

Категории

Все категории
Loading categories
jd — Go CLI, который деобфусцирует вывод javascript-obfuscator (obfuscator.io) и разминифицирует JavaScript с помощью AST-преобразований, статического декодирования и резервного варианта с песочницей goja. | Kitploit
Инструменты/GitHubGitHub/ejfkdev/jd
Статический анализДинамический анализ (песочница)Анализ КодаОбратная инженерияАнализ вредоносных программУтилиты и фреймворки
GitHubejfkdev/jd

jd

Go CLI, который деобфусцирует вывод javascript-obfuscator (obfuscator.io) и разминифицирует JavaScript с помощью AST-преобразований, статического декодирования и резервного варианта с песочницей goja.

Репозиторий
2201 месяц назадЕщё не проверено

Популярное

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

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

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

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

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

jd

CI Release License Go Version Release zread

中文

jd — это инструмент на Go, который деобфусцирует вывод javascript-obfuscator (obfuscator.io) и выполняет обратную минификацию JavaScript. Это порт на Go для webcrack и synchrony.

Возможности

Деобфускация Obfuscator.io

Обнаруживает и обращает вывод javascript-obfuscator:

  • Обнаружение строкового массива (формы с обёрткой в функцию и простой массив, var/const/let)
  • Обнаружение ротатора массива (IIFE с push/shift и условием выхода)
  • Обнаружение декодера (сдвиг индекса, кодировки Base64/RC4/пользовательские, двухпараметрические декодеры)
  • Разрешение псевдонимов-обёрток (псевдонимы var/function для декодеров)
  • Гибридное декодирование — статическая симуляция (SIMPLE/Base64/RC4) с резервным выполнением в песочнице goja для пользовательских кодировщиков
  • Удаление вспомогательных элементов — объявления строкового массива, ротатора и декодера удаляются после декодирования

Обратная минификация

Более 20 преобразований для читаемости:

ПреобразованиеПример
computed-propertiesconsole["log"] → console.log
merge-strings"a" + "b" → "ab"
unminify-booleans!0 → true, !1 → false
number-expressions1 + 2 → 3
void-to-undefinedvoid 0 → undefined
raw-literals0x1 → 1
sequencea(), b(), c() → отдельные инструкции
split-variable-declarationsvar a=1, b=2 → var a=1; var b=2
block-statementsобернуть тела из одной инструкции в { }
logical-to-ifa && b() → if (a) b()
ternary-to-ifa ? b() : c() → if (a) b() else c()
merge-else-ifelse { if (...) } → else if (...)
for-to-whilefor(;;) → while(true)
yoda5 === x → x === 5
infinity1/0 → Infinity
invert-boolean-logic!(a == b) → a != b
unary-expressionsудалить no-op void/!/typeof на уровне инструкции
remove-double-not!!true → true

Поддержка ES-модулей

Парсер goja не поддерживает синтаксис ES-модулей (import/export). jd предварительно извлекает инструкции import/export, парсит оставшийся скрипт, выполняет преобразования, а затем добавляет эти инструкции в начало вывода. Динамические выражения import() корректно отличаются от объявлений import.

Форматирование с учётом регулярных выражений

Для файлов, которые goja не может полностью разобрать (например, определения языков редактора Monaco с интенсивным использованием регулярных выражений), jd переключается на форматирование на уровне исходного кода: токенизатор разбивает по точкам с запятой, сохраняя регулярные литералы, строки и комментарии без изменений.

Установка

macOS (Homebrew)

brew install ejfkdev/tap/jd

Готовые бинарные файлы

Скачайте со страницы GitHub Releases (Linux/macOS/Windows, x86_64/ARM64).

Сборка из исходного кода

go build -o jd .

Использование

# Деобфусцировать файл (вывод в stdout)
jd obfuscated.js

# Записать в файл
jd obfuscated.js -o cleaned.js

# Чтение из stdin
cat obfuscated.js | jd -

# Обработать каталог — рекурсивно обрабатывает все файлы .js/.mjs/.cjs,
# повторяет структуру каталогов в выходном каталоге.
jd src/ -o dist/

# Режим каталога с выводом по умолчанию: создаёт <input>-deobfuscated
jd src/

# Указать расширения файлов
jd src/ -o dist/ --ext .js,.mjs

# Параллельная обработка (N воркеров, по умолчанию: число CPU)
jd src/ -o dist/ -j 8

# Пропустить файлы, не являющиеся кодом (выводить только обработанный JS)
jd src/ -o dist/ --copy-noncode=false

# Только деобфускация, пропустить обратную минификацию
jd --unminify=false obfuscated.js

# Вывод в JSON с предупреждениями
jd --json obfuscated.js

Флаги

ФлагПо умолчаниюОписание
-o, --outputstdoutвыходной файл или каталог (по умолчанию для каталога: <input>-deobfuscated)
--deobfuscatetrueзапустить деобфускацию obfuscator.io
--unminifytrueзапустить преобразования для читаемости
--sandboxautoвыполнение декодера: auto (сначала статически, затем песочница), only (всегда песочница), off (только статически)
--timeout10sтаймаут песочницы на файл
--ext.js,.mjs,.cjsрасширения файлов для обработки в режиме каталога
-j, --workers0 (=CPU)параллельные воркеры для режима каталога
--copy-noncodetrueкопировать файлы, не являющиеся кодом, в выходной каталог
-v, --verbosefalseвыводить диагностику в stderr
--jsonfalseвыводить JSON {code, warnings}

Архитектура

jd/
├── main.go                     # CLI entry
├── internal/
│   ├── cli/                    # cobra CLI (i18n: English/Chinese)
│   ├── deobfuscator/           # top-level pipeline + ES module preprocessing
│   ├── jsast/                  # AST walker (Cursor, Replace, Remove, Clone)
│   ├── codegen/                # AST → JavaScript printer (pretty/compact)
│   ├── scope/                  # lexical scope & binding analysis
│   ├── sandbox/                # goja VM wrapper for decoder execution
│   ├── decoder/                # static decoding: Base64/RC4/rotation
│   ├── deobfuscate/            # string-array/rotator/decoder detection + transforms
│   ├── unminify/               # 20 readability transforms + fixpoint runner
│   └── transform/              # Transform abstraction + ApplyFixpoint
└── testdata/samples/           # test fixtures

Конвейер

parse → splitModuleStatements → deobfuscate → unminify → generate
Скачать инструмент