Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
jd — CLI em Go que desobfusca a saída do javascript-obfuscator (obfuscator.io) e desminifica JavaScript usando transformações de AST, decodificação estática e um fallback de sandbox goja. | Kitploit
Ferramentas/GitHubGitHub/ejfkdev/jd
Análise EstáticaAnálise Dinâmica (Sandboxing)Análise de CódigoEngenharia ReversaAnálise de MalwareUtilitários e Frameworks
GitHubejfkdev/jd

jd

CLI em Go que desobfusca a saída do javascript-obfuscator (obfuscator.io) e desminifica JavaScript usando transformações de AST, decodificação estática e um fallback de sandbox goja.

Ver Repositório
220há 1 mêsAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

jd

CI Release License Go Version Release zread

中文

jd é uma ferramenta Go que desofusca a saída do javascript-obfuscator (obfuscator.io) e desminifica JavaScript. É um port em Go do webcrack e do synchrony.

Recursos

Desofuscação do Obfuscator.io

Detecta e reverte a saída do javascript-obfuscator:

  • Detecção de string array (formas de array simples e encapsuladas em função, var/const/let)
  • Detecção de array rotator (IIFE push/shift com condição de parada)
  • Detecção de decoder (deslocamento de índice, codificações Base64/RC4/personalizadas, decodificadores de dois parâmetros)
  • Resolução de wrapper alias (aliases var/function para decodificadores)
  • Decodificação híbrida — simulação estática (SIMPLE/Base64/RC4) com fallback em sandbox goja para codificadores personalizados
  • Remoção de helpers — declarações de string array, rotator e decoder removidas após a decodificação

Desminificação

Mais de 20 transformações de legibilidade:

TransformaçãoExemplo
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() → instruções separadas
split-variable-declarationsvar a=1, b=2 → var a=1; var b=2
block-statementsenvolve corpos de instrução única em { }
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-expressionsremove void/!/typeof sem efeito no nível de instrução
remove-double-not!!true → true

Suporte a Módulos ES

O parser do goja não suporta sintaxe de módulo ES (import/export). O jd pré-extrai as instruções import/export, faz o parse do script restante, executa as transformações e então insere as instruções no início da saída. Expressões import() dinâmicas são corretamente distinguidas de declarações import.

Formatação Segura para Regex

Para arquivos que o goja não consegue analisar completamente (por exemplo, definições de linguagem do editor Monaco com uso intenso de regex), o jd recorre à formatação em nível de código-fonte: um tokenizador divide por ponto e vírgula preservando literais regex, strings e comentários literalmente.

Instalação

macOS (Homebrew)

brew install ejfkdev/tap/jd

Binários pré-compilados

Baixe em GitHub Releases (Linux/macOS/Windows, x86_64/ARM64).

Compilar a partir do código-fonte

go build -o jd .

Uso

# Desofuscar um arquivo (saída para stdout)
jd obfuscated.js

# Escrever em um arquivo
jd obfuscated.js -o cleaned.js

# Ler da entrada padrão
cat obfuscated.js | jd -

# Processar um diretório — processa recursivamente todos os arquivos .js/.mjs/.cjs,
# espelha a árvore de diretórios no diretório de saída.
jd src/ -o dist/

# Modo diretório com saída padrão: cria <input>-deobfuscated
jd src/

# Especificar extensões de arquivo
jd src/ -o dist/ --ext .js,.mjs

# Processamento paralelo (N workers, padrão: número de CPUs)
jd src/ -o dist/ -j 8

# Ignorar arquivos que não são código (apenas gera JS processado)
jd src/ -o dist/ --copy-noncode=false

# Apenas desofuscar, ignorar a desminificação
jd --unminify=false obfuscated.js

# Saída JSON com avisos
jd --json obfuscated.js

Flags

FlagPadrãoDescrição
-o, --outputstdoutarquivo ou diretório de saída (padrão para diretório: <input>-deobfuscated)
--deobfuscatetrueexecuta a desofuscação do obfuscator.io
--unminifytrueexecuta as transformações de legibilidade
--sandboxautoexecução do decoder: auto (estático e depois sandbox), only (sempre sandbox), off (apenas estático)
--timeout10stimeout do sandbox por arquivo
--ext.js,.mjs,.cjsextensões de arquivo a processar no modo diretório
-j, --workers0 (=CPU)workers paralelos para o modo diretório
--copy-noncodetruecopia arquivos que não são código para o diretório de saída
-v, --verbosefalseimprime diagnósticos em stderr
--jsonfalseemite JSON {code, warnings}

Arquitetura

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
Baixar ferramenta