Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
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
jsdeob-workbench — Faça engenharia reversa de JavaScript ofuscado visualmente. Encadeie transformações, inspecione mudanças na AST, escreva plugins de desofuscação reutilizáveis. | Kitploit
Ferramentas/GitHubGitHub/owl4444/jsdeob-workbench
Análise EstáticaAnálise de CódigoEngenharia ReversaScripting e AutomaçãoDepuradoresAnálise de MalwareAnálise de BináriosAprendizado e Educação
GitHubowl4444/jsdeob-workbench

jsdeob-workbench

Faça engenharia reversa de JavaScript ofuscado visualmente. Encadeie transformações, inspecione mudanças na AST, escreva plugins de desofuscação reutilizáveis.

Ver Repositório
11810há 6 mesesRevisado pelo Kitploit

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
Site

jsdeob-workbench

Uma bancada visual para desofuscar JavaScript. Construa cadeias de transformação, percorra-as, escreva seus próprios plugins.

img

img

Demonstração no YouTube

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

O que é isso?

Este aplicativo revela a Árvore Sintática Abstrata (AST) de programas JavaScript. A ideia surgiu ao analisar uma amostra de malware relacionada ao obfuscatio.io, que me levou a aprender mais sobre o BabelJS para desofuscação. Se você já tentou fazer engenharia reversa de JS ofuscado (pense em bundles webpack, saída do obfuscator.io, amostras de malware empacotadas), sabe como é doloroso. Esta ferramenta permite que você:

  • Escreva scripts de transformação baseados no BabelJS
  • Consulte rapidamente a AST no ASTViewer
  • Encadeie várias transformações visualmente e obtenha um resumo para ver as alterações.
  • Compartilhe plugins com colaboradores (Manual) e exporte configurações.
  • Escreva padrões que você possa reutilizar como plugins.
  • Salve projetos enquanto analisa outras amostras JS.

Início Rápido

root@kitploit:~
npm install
npm start
# Open http://localhost:3000

É isso.

A Interface

Barra lateral esquerda - Todas as transformações disponíveis (embutidas + sua receita como plugins) incluindo a cadeia de receita. (Pense no Cyberchef)

Centro - Editores de entrada/saída. Cole seu código ofuscado à esquerda e visualize o código transformado à direita.

Painéis direitos - Visualizador AST, analisador de escopo, resumo fácil de visualizar.

img

Análise de Escopo

O BabelJS nos permite visualizar o escopo e as ligações. Isso é especialmente útil para ver se há variáveis não utilizadas, por exemplo. Esta visão também nos permite procurar locais onde uma variável está sendo referenciada.

img

Escrevendo Transformações

Pressione o botão + ou pressione Ctrl+N para abrir o editor de script. As transformações são apenas código JS com acesso a:

root@kitploit:~
// Available globals:
ast        // The parsed Babel AST
traverse   // Walk the tree: traverse({ Identifier(path) { ... } })
t          // Babel types: t.isStringLiteral(node), t.identifier('x')
config     // User config from the recipe card
stats      // Track your changes: stats.replaced = 5
parser     // Parse code: parser.parse('var x = 1')
generate   // Generate code: generate(node).code
run        // Eval helper: run('1+1') => 2 (DANGER. THIS IS MEANT TO BE RUN ON YOUR OWN MACHINE IN A SANDBOX)

Exemplo - remova todas as strings "debug" (StringLiteral):

root@kitploit:~
// The following two will appear as parameter in recipe chain as seen in the next screenshot
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;
      }
    }
  }
});

Você pode optar por:

  • Executar este script diretamente via (CTRL + ENTER) para teste rápido
  • Adicionar o script escrito à cadeia de receita sem salvar como plugin (conforme mostrado na captura de tela). Você pode salvá-lo depois
  • Salve isto como plugin assim que souber que funciona e quiser compartilhar este plugin com outros.

A captura de tela abaixo mostra:

  1. O editor de script (Clique no botão novo no canto superior esquerdo OU atalho com Ctrl-E)
  2. Após escrever o script BabelJS, adicione-o à cadeia de receita.
  3. Na receita, com o parâmetro detectado, podemos modificar o comportamento do plugin.
  4. O editor de saída mostra a transformação bem-sucedida.

img

Transformações Embutidas

Observe que elas podem falhar dependendo da técnica de ofuscação e podem exigir scripts personalizados. Você também pode modificá-las e salvá-las como um novo script personalizado também.

Plugins

Coloque seus próprios arquivos .js nas subpastas plugins/<category>/. Eles aparecerão na barra lateral agrupados por pasta.

img

Por exemplo:

  • Nome: Derivado do nome do arquivo (Bracket-to-dot-notation.js → "Decode Strings")
  • Categoria: O nome da subpasta (plugins/Utilities/ → categoria "nyx")
root@kitploit:~
/**
 * Bracket to Dot Notation
 * Changes things like  console["log"] to console.log
 * 
 * Category: utilities
 */

// Script Editor - Ctrl+Enter to run, Ctrl+E to close
// Use traverse(visitor) to modify the AST
// Access 't' for Babel types

traverse({
  MemberExpression(path) {
    if(path.node.computed === true){
      // this is the bracket notation
      
      prop = path.node.property
      if(t.isStringLiteral(prop)  &&
          /^[a-zA-Z_][a-zA-Z_0-9]*$/.test(prop.value)
       ){

        path.node.computed = false; // step 1

      // step 2 change literal to identifier
        path.node.property = t.identifier(prop.value)
      

      }
    }
  }

});

Existem dois métodos para adicionar parâmetros:

  1. (Isto tem precedência e é altamente recomendado) Seguindo este formato no código, o editor de script tentará criar dois parâmetros (targetValue e removeMatches)
root@kitploit:~
const targetValue = config.targetValue || 'debug';
const removeMatches = config.removeMatches !== false;
  1. Se algum parâmetro for perdido devido a casos extremos, salvar como plugin permite adicionar parâmetros adicionais que possam ter sido perdidos.

img

Resumo Principal

Inclui:

  • Tempo gasto para cada plugin ser executado
  • Estatísticas de alterações no tamanho do código
  • Gráfico para visualização das alterações

img

Atalhos de Teclado

TeclaAção
Ctrl+EAlternar editor de script
Ctrl+Shift+EAlternar painel de avaliação (PERIGOSO)
Ctrl+SSalvar projeto

Construindo Executável Independente

OBSERVE QUE O INDEPENDENTE PODE TER PROBLEMAS SE HOUVER MUITOS NÓS ANINHADOS. A SOLUÇÃO ALTERNATIVA PODE NÃO FUNCIONAR ÀS VEZES.

Para construir com npm, podemos usar o seguinte

root@kitploit:~
npm run build        # Windows only

A saída vai para dist/. Copie a pasta plugins/ ao lado do executável se quiser suas transformações personalizadas.

Problemas de Tamanho da Pilha

Código profundamente aninhado (como JSFuck) pode estourar a pilha. O script de construção tenta aumentá-la automaticamente no Windows. Se você tiver estouros de pilha, tente executar a partir da fonte com npm start (usa --stack-size=65536)

Ainda não descobri como aumentar o tamanho da pilha ao construir em um executável independente. Por favor, me avise se você souber como!

Créditos

Construído com:

  • Babel - AST parsing and transforms
  • Monaco Editor - Code editor
  • Express - Backend server

img

Dúvidas? Problemas? Abra uma issue no GitHub.

Baixar ferramenta
NomeO que faz
BeautifyFormata o código de forma organizada
Constant Folding1 + 2 → 3, "a" + "b" → "ab"
Decode StringsDecodes \x48\x65\x6c\x6c\x6f → "Hello"
Inline Array ValuesInsere diretamente acessos simples a elementos de array
Inline String ArrayInsere diretamente arrays de strings usados por ofuscadores
Opaque Predicate RemovalRemove condições sempre verdadeiras/falsas
Remove CommentsRemove todos os comentários do código
Remove IIFEDesencapsula wrappers (function(){...})()
Remove Unused CodeExclui variáveis e funções mortas
Simplify Literals!0 → true, void 0 → undefined