Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
jd — CLI de Go que desofusca la salida de javascript-obfuscator (obfuscator.io) y desminifica JavaScript usando transformaciones AST, decodificación estática y un fallback de sandbox goja. | Kitploit
Herramientas/GitHubGitHub/ejfkdev/jd
Análisis EstáticoAnálisis Dinámico (Sandboxing)Análisis de CódigoIngeniería InversaAnálisis de MalwareUtilidades y Frameworks
GitHubejfkdev/jd

jd

CLI de Go que desofusca la salida de javascript-obfuscator (obfuscator.io) y desminifica JavaScript usando transformaciones AST, decodificación estática y un fallback de sandbox goja.

Ver Repositorio
220hace 1 mesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

jd

CI Release License Go Version Release zread

中文

jd es una herramienta de Go que desofusca la salida de javascript-obfuscator (obfuscator.io) y desminifica JavaScript. Es un port a Go de webcrack y synchrony.

Características

Desofuscación de Obfuscator.io

Detecta e invierte la salida de javascript-obfuscator:

  • Detección de array de cadenas (formas de array simple y envuelto en función, var/const/let)
  • Detección de rotador de array (IIFE push/shift con condición de ruptura)
  • Detección de decodificador (desplazamiento de índice, codificaciones Base64/RC4/personalizadas, decodificadores de dos parámetros)
  • Resolución de alias de envoltorio (alias de var/function a decodificadores)
  • Decodificación híbrida — simulación estática (SIMPLE/Base64/RC4) con fallback a sandbox de goja para codificadores personalizados
  • Eliminación de helpers — declaraciones de array de cadenas, rotador y decodificador eliminadas tras la decodificación

Desminificación

Más de 20 transformaciones de legibilidad:

TransformaciónEjemplo
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() → sentencias separadas
split-variable-declarationsvar a=1, b=2 → var a=1; var b=2
block-statementsenvolver cuerpos de una sola sentencia en { }
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-expressionseliminar void/!/typeof sin efecto a nivel de sentencia
remove-double-not!!true → true

Soporte de Módulos ES

El parser de goja no soporta la sintaxis de módulos ES (import/export). jd pre-extrae las sentencias import/export, parsea el script restante, ejecuta las transformaciones y luego antepone las sentencias a la salida. Las expresiones import() dinámicas se distinguen correctamente de las declaraciones import.

Formateo Seguro para Regex

Para archivos que goja no puede parsear completamente (p. ej. definiciones de lenguaje del editor Monaco con uso intensivo de regex), jd recurre al formateo a nivel de código fuente: un tokenizador divide por punto y coma preservando literales regex, cadenas y comentarios textualmente.

Instalación

macOS (Homebrew)

brew install ejfkdev/tap/jd

Binarios precompilados

Descárgalos desde GitHub Releases (Linux/macOS/Windows, x86_64/ARM64).

Compilar desde el código fuente

go build -o jd .

Uso

# 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

Flags

FlagPor defectoDescripción
-o, --outputstdoutarchivo o directorio de salida (por defecto para dir: <input>-deobfuscated)
--deobfuscatetrueejecutar desofuscación de obfuscator.io
--unminifytrueejecutar transformaciones de legibilidad
--sandboxautoejecución del decodificador: auto (estático y luego sandbox), only (siempre sandbox), off (solo estático)
--timeout10stimeout del sandbox por archivo
--ext.js,.mjs,.cjsextensiones de archivo a procesar en modo directorio
-j, --workers0 (=CPU)workers paralelos para modo directorio
--copy-noncodetruecopiar archivos que no son código al directorio de salida
-v, --verbosefalseimprimir diagnósticos en stderr
--jsonfalseemitir JSON {code, warnings}

Arquitectura

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
Descargar herramienta