Deobfuscator JavaScript

Incolla un blob di JavaScript offuscato, stringhe codificate in esadecimale, nomi di variabili a una lettera, un ciclo di decodifica in cima, e lo strumento sfoglia i livelli: disoffusca le stringhe, in linea l’array di ricerca, rinomina le variabili in segnaposto leggibili, appiattisce i wrapper banali e abbellisce il risultato. Utile per analizzare frammenti sospetti che hai estratto da una pagina o da un link di pastebin incollato.

Come deoffuscare JavaScript

  1. 1

    Incolla la sorgente offuscata

    Minificato, impacchettato o prodotto da strumenti in stile `javascript-obfuscator.io`.

  2. 2

    Lascia che il parser lo elabori

    Gli array di stringhe vengono decodificati, le sequenze numeriche vengono valutate e i rami di codice morto vengono potati.

  3. 3

    Applica la rinominazione

    Le variabili a una lettera `a`/`b`/`c` vengono rinominate in `var1`, `var2`, ecc. segnaposto leggibili, non necessariamente nomi significativi.

  4. 4

    Abbellisci

    Indenta, aggiungi nuove righe e produci codice che puoi effettivamente leggere e comprendere.

Tecniche che il deobfuscator inverte

Offuscamento Inversione
Stringhe letterali esadecimale Decodifica \x48\x69 in "Hi"
Identificatori con escape Unicode \u006E\u0061\u006D\u0065 -> name
Array di stringhe + funzione decodificatrice In linea l’array, chiama il decodificatore al momento del parsing
Folding di costanti numeriche 0x1F3 + 5 -> 504
Wrapper eval(...) Solleva il codice interno al livello superiore
Appiattimento del flusso di controllo (macchina a stati) Rileva il switch-case, ricostruisce il flusso
Codice morto / ternari inutili Rimuovi i rami che non vengono mai eseguiti
Nomi in stile _0x1a2b3c() Sostituisci con var1, var2 incrementali

Limiti: cosa non fa lo strumento

  • Recuperare i nomi originali delle variabili. Una volta che userEmail è rinominato in a, nessuno strumento può indovinarlo. Ottieni una struttura leggibile, non la semantica originale.
  • Decomprimere virtualizzatori personalizzati. Gli offuscatori commerciali pesanti (JScrambler, livelli aziendali di Obfuscator.io) introducono una VM personalizzata che interpreta il bytecode. Sconfiggere questi richiede ingegneria inversa manuale.
  • Eseguire codice arbitrario. Il deobfuscator valuta espressioni pure staticamente. Non recupererà risorse remote, non creerà elementi DOM né comunicherà con la rete.

Casi d’uso tipici

  • Ricerca sulla sicurezza: analizzare uno script sospetto arrivato in un’email o servito da un CDN compromesso.
  • Archeologia del codice: recuperare codice legacy dove l’unico artefatto sopravvissuto è un pacchetto minificato.
  • Apprendimento: comprendere cosa fa effettivamente un’offuscazione a livello tutorial sotto il cofano.

Sicurezza ed etica

Non eseguire JavaScript non affidabile in una scheda del browser loggata in qualcosa di importante, il codice può leggere i cookie, chiamare API interne ed esfiltrare stato. Il deobfuscator stesso opera sul sorgente come testo; non esegue il codice che incolli.

Deobfuscate solo il codice che sei autorizzato ad analizzare. L’ingegneria inversa di software con licenza può essere limitata nella tua giurisdizione.

Domande frequenti

No. Una volta che l’offuscator rinomina userEmail in _0x1a2b3c, il nome originale è perso. Il deobfuscator ti fornisce segnaposto leggibili (var1, var2) e una struttura corretta, ma non i nomi semantici originali.

No. Analizza il codice come un AST e applica trasformazioni statiche. Le espressioni pure (come 0x1F3 + 5) vengono piegate, ma nulla tocca la rete, i cookie o il DOM.

Sì, ma l’output del bundler è minificato piuttosto che deliberatamente offuscato, quindi il risultato è solo codice abbellito con i wrapper dei moduli ripristinati. Le mappe sorgente, se disponibili separatamente, ti danno nomi molto migliori.

Strumenti commerciali pesanti (JScrambler aziendale, VM personalizzate) introducono un interprete di bytecode che l’analisi statica non può districare. Lo strumento otterrà il livello superficiale ma la logica centrale rimane opaca senza inversione manuale.

Strumenti correlati

Strumento disponibile in altre lingue