Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Strumenti/GitHubGitHub/owl4444/jsdeob-workbench
Analisi StaticaAnalisi del CodiceReverse EngineeringScripting e AutomazioneDebuggerAnalisi MalwareAnalisi di BinariApprendimento e Formazione
GitHubowl4444/jsdeob-workbench

jsdeob-workbench

Esegui reverse engineering di JavaScript offuscato visivamente. Combina trasformazioni, ispeziona i cambiamenti dell'AST, scrivi plugin di deoffuscamento riutilizzabili.

Vedi Repository
118106 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Sito web

jsdeob-workbench

Un banco da lavoro visivo per deoffuscare JavaScript. Costruisci catene di trasformazione, percorrile passo dopo passo, scrivi i tuoi plugin.

img

img

Dimostrazione su YouTube

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

Cos'è?

Questa applicazione rivela l'Abstract Syntax Tree (AST) di un programma JavaScript. L'idea è nata analizzando un campione di malware correlato a obfuscatio.io, che mi ha portato a imparare di più su BabelJS per la deoffuscazione. Se hai mai provato a fare reverse engineering di JS offuscato (pensa: bundle webpack, output di obfuscator.io, campioni di malware impacchettati), sai quanto sia doloroso. Questo strumento ti permette di:

  • Scrivere script di trasformazione basati su BabelJS
  • Consultare rapidamente l'AST tramite ASTViewer
  • Incatenare più trasformazioni visivamente e ottenere un riepilogo delle modifiche.
  • Condividere plugin con i collaboratori (manualmente) ed esportare configurazioni.
  • Scrivere pattern che potresti riutilizzare come plugin.
  • Salvare progetti mentre analizzi altri campioni JS.

Avvio rapido

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

Tutto qui.

L'interfaccia

Barra laterale sinistra - Tutte le trasformazioni disponibili (integrate + la tua ricetta come plugin), inclusa la catena della ricetta. (Pensa a Cyberchef)

Centro - Editor di input/output. Incolla il codice offuscato a sinistra e visualizza il codice trasformato a destra.

Pannelli di destra - Visualizzatore AST, analizzatore di scope, riepilogo facile da consultare.

img

Analisi dello scope

BabelJS ci permette di visualizzare lo scope e i binding. Ciò è particolarmente utile, ad esempio, per individuare variabili inutilizzate. Questa vista consente anche di cercare le posizioni in cui una variabile viene referenziata.

img

Scrivere trasformazioni

Premi il pulsante + o premi Ctrl+N per aprire l'editor di script. Le trasformazioni sono semplici codice JS con accesso a:

root@kitploit:~
// Globali disponibili:
ast        // L'AST Babel parsato
traverse   // Cammina l'albero: traverse({ Identifier(path) { ... } })
t          // Tipi Babel: t.isStringLiteral(node), t.identifier('x')
config     // Configurazione utente dalla card della ricetta
stats      // Tieni traccia delle modifiche: stats.replaced = 5
parser     // Parsa codice: parser.parse('var x = 1')
generate   // Genera codice: generate(node).code
run        // Helper per eval: run('1+1') => 2 (PERICOLOSO. È INTESO PER ESSERE ESEGUITO SULLA TUA MACCHINA IN UNA SANDBOX)

Esempio - rimuovere tutte le stringhe "debug" (StringLiteral):

root@kitploit:~
// Le due righe seguenti appariranno come parametri nella catena della ricetta come mostrato nello screenshot successivo
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;
      }
    }
  }
});

Puoi scegliere di:

  • Eseguire questo script direttamente con (CTRL + ENTER) per test rapidi
  • Aggiungere lo script scritto nella catena della ricetta senza salvarlo come plugin (come mostrato nello screenshot). Puoi salvarlo in seguito
  • Salvarlo come plugin una volta che funziona e vuoi condividerlo con altri.

Lo screenshot seguente mostra:

  1. L'editor di script (Clicca sul pulsante nuovo in alto a sinistra OPPURE scorciatoia Ctrl-E)
  2. Dopo aver scritto lo script BabelJS, aggiungilo alla catena della ricetta.
  3. Nella ricetta, con il parametro rilevato, possiamo modificare il comportamento del plugin.
  4. L'editor di output mostra la trasformazione riuscita.

img

Trasformazioni integrate

Nota che queste potrebbero fallire a seconda della tecnica di offuscamento e potrebbero richiedere script personalizzati. Puoi anche modificarle e salvarle come nuovo script personalizzato.

Plugin

Inserisci i tuoi file .js nelle sottocartelle plugins/<categoria>/. Appariranno nella barra laterale raggruppati per cartella.

img

Ad esempio:

  • Nome: Derivato dal nome del file (Bracket-to-dot-notation.js → "Decode Strings")
  • Categoria: Il nome della sottocartella (plugins/Utilities/ → categoria "nyx")
root@kitploit:~
/**
 * Bracket to Dot Notation
 * Changes things like  console["log"] to console.log
 * 
 * Category: utilities
 */

// Script Editor - Ctrl+Enter per eseguire, Ctrl+E per chiudere
// Usa traverse(visitor) per modificare l'AST
// Accedi a 't' per i tipi Babel

traverse({
  MemberExpression(path) {
    if(path.node.computed === true){
      // questa è la notazione con parentesi
      
      prop = path.node.property
      if(t.isStringLiteral(prop)  &&
          /^[a-zA-Z_][a-zA-Z_0-9]*$/.test(prop.value)
       ){

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

      // passo 2: cambia literal in identifier
        path.node.property = t.identifier(prop.value)
      

      }
    }
  }

});

Ci sono due metodi per aggiungere parametri:

  1. (Questo ha la precedenza ed è altamente raccomandato) Seguendo questo formato nel codice, l'editor di script tenterà di creare due parametri (targetValue e removeMatches)
root@kitploit:~
const targetValue = config.targetValue || 'debug';
const removeMatches = config.removeMatches !== false;
  1. Se qualche parametro viene perso a causa di casi limite, salvare come plugin permette di aggiungere parametri aggiuntivi che potrebbero essere stati omessi.

img

Riepilogo principale

Include:

  • Tempo impiegato da ogni plugin per essere eseguito
  • Statistiche sulle dimensioni del codice
  • Grafico per la visualizzazione delle modifiche

img

Scorciatoie da tastiera

TastoAzione
Ctrl+EAttiva/disattiva editor di script
Ctrl+Shift+EAttiva/disattiva pannello eval (PERICOLOSO)
Ctrl+SSalva progetto

Creazione di un eseguibile standalone

NOTA CHE L'ESEGUIBILE STANDALONE POTREBBE AVERE PROBLEMI SE CI SONO MOLTI NODI ANNIDATI. IL WORKAROUND POTREBBE NON FUNZIONARE A VOLTE.

Per compilare con npm, possiamo usare il comando:

root@kitploit:~
npm run build        # Solo Windows

L'output va in dist/. Copia la cartella plugins/ accanto all'eseguibile se vuoi le tue trasformazioni personalizzate.

Problemi di dimensione dello stack

Il codice profondamente annidato (come JSFuck) può far esplodere lo stack. Lo script di build cerca di aumentarlo automaticamente su Windows. Se ottieni overflow dello stack, prova a eseguire dal sorgente con npm start (usa --stack-size=65536)

Non ho ancora capito come aumentare la dimensione dello stack quando si compila in un eseguibile standalone. Fammi sapere se sai come fare!

Crediti

Costruito con:

  • Babel - Parsing AST e trasformazioni
  • Monaco Editor - Editor di codice
  • Express - Server backend

img

Domande? Problemi? Apri una issue su GitHub.

Scarica lo strumento
NomeCosa fa
BeautifyFormatta il codice in modo ordinato
Constant Folding1 + 2 → 3, "a" + "b" → "ab"
Decode StringsDecodifica \x48\x65\x6c\x6c\x6f → "Hello"
Inline Array ValuesInline semplici accessi a elementi di array
Inline String ArrayInline array di stringhe usate dagli offuscatori
Opaque Predicate RemovalRimuove condizioni sempre vere/false
Remove CommentsElimina tutti i commenti dal codice
Remove IIFEElimina i wrapper (function(){...})()
Remove Unused CodeCancella variabili e funzioni morte
Simplify Literals!0 → true, void 0 → undefined