Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/ejfkdev/jd
Analyse StatiqueAnalyse Dynamique (Sandboxing)Analyse de CodeRétro-ingénierieAnalyse de MalwareUtilitaires et Frameworks
GitHubejfkdev/jd

jd

CLI Go qui désobfusque la sortie de javascript-obfuscator (obfuscator.io) et déminifie le JavaScript à l'aide de transformations AST, de décodage statique et d'un repli sur un bac à sable goja.

Voir le dépôt
220il y a 1 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

jd

CI Release License Go Version Release zread

中文

jd est un outil Go qui désobfusque la sortie de javascript-obfuscator (obfuscator.io) et déminifie le JavaScript. C'est un portage en Go de webcrack et synchrony.

Fonctionnalités

Désobfuscation Obfuscator.io

Détecte et inverse la sortie de javascript-obfuscator :

  • Détection du tableau de chaînes (formes avec fonction englobante et tableau simple, var/const/let)
  • Détection du rotateur de tableau (IIFE push/shift avec condition de sortie)
  • Détection du décodeur (décalage d'index, encodages Base64/RC4/personnalisés, décodeurs à deux paramètres)
  • Résolution des alias d'enveloppe (alias var/function vers les décodeurs)
  • Décodage hybride — simulation statique (SIMPLE/Base64/RC4) avec repli sur le bac à sable goja pour les encodeurs personnalisés
  • Suppression des assistants — les déclarations de tableau de chaînes, de rotateur et de décodeur sont supprimées après décodage

Déminification

Plus de 20 transformations de lisibilité :

TransformationExemple
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() → instructions séparées
split-variable-declarationsvar a=1, b=2 → var a=1; var b=2
block-statementsenvelopper les corps à instruction unique dans { }
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-expressionssupprimer les void/!/typeof sans effet au niveau instruction
remove-double-not!!true → true

Prise en charge des modules ES

Le parseur de goja ne prend pas en charge la syntaxe des modules ES (import/export). jd pré-extrait les instructions import/export, analyse le script restant, exécute les transformations, puis ajoute les instructions au début de la sortie. Les expressions import() dynamiques sont correctement distinguées des déclarations d'import.

Formatage sûr pour les expressions régulières

Pour les fichiers que goja ne peut pas analyser entièrement (par exemple les définitions de langage de l'éditeur Monaco utilisant intensivement les expressions régulières), jd se rabat sur un formatage au niveau source : un tokenizer découpe sur les points-virgules tout en préservant verbatim les littéraux d'expressions régulières, les chaînes et les commentaires.

Installation

macOS (Homebrew)

brew install ejfkdev/tap/jd

Binaires précompilés

Téléchargez depuis GitHub Releases (Linux/macOS/Windows, x86_64/ARM64).

Compilation depuis les sources

go build -o jd .

Utilisation

# Deobfuscate a file (output to stdout)
jd obfuscated.js

# Write to a file
jd obfuscated.js -o cleaned.js

# Read from stdin
cat obfuscated.js | jd -

# Process a directory — recursively processes all .js/.mjs/.cjs files,
# mirrors the directory tree to the output directory.
jd src/ -o dist/

# Directory mode with default output: creates <input>-deobfuscated
jd src/

# Specify file extensions
jd src/ -o dist/ --ext .js,.mjs

# Parallel processing (N workers, default: number of CPUs)
jd src/ -o dist/ -j 8

# Skip non-code files (only output processed JS)
jd src/ -o dist/ --copy-noncode=false

# Only deobfuscate, skip unminify
jd --unminify=false obfuscated.js

# JSON output with warnings
jd --json obfuscated.js

Options

OptionDéfautDescription
-o, --outputstdoutfichier ou répertoire de sortie (défaut pour un répertoire : <input>-deobfuscated)
--deobfuscatetrueexécuter la désobfuscation obfuscator.io
--unminifytrueexécuter les transformations de lisibilité
--sandboxautoexécution du décodeur : auto (statique puis bac à sable), only (toujours le bac à sable), off (statique uniquement)
--timeout10sdélai d'expiration du bac à sable par fichier
--ext.js,.mjs,.cjsextensions de fichiers à traiter en mode répertoire
-j, --workers0 (=CPU)workers parallèles pour le mode répertoire
--copy-noncodetruecopier les fichiers non-code dans le répertoire de sortie
-v, --verbosefalseafficher les diagnostics sur stderr
--jsonfalseémettre un JSON {code, warnings}

Architecture

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

Pipeline

parse → splitModuleStatements → deobfuscate → unminify → generate
Télécharger l’outil