Guida introduttiva
Obfuscator.io trasforma il codice sorgente leggibile in una versione protetta, difficile da comprendere e da decompilare. È lo strumento ideale per proteggere algoritmi proprietari, logiche di licenza e codice critico per il business.
Benvenuti in Obfuscator.io
Questa guida illustra come offuscare il primo file, scegliere un preset e comprendere il pannello delle opzioni. Per approfondimenti si vedano le sezioni Offuscamento VM, Offuscamento di base e Best practice.
Avvio rapido
1. Incollare il codice
Inserire il codice JavaScript nel pannello dell'editor a sinistra. È possibile incollarlo direttamente oppure utilizzare la funzione di caricamento file per l'elaborazione in blocco.
2. Scegliere un preset
Selezionare un preset dal menu a discesa nel pannello delle opzioni. Si può iniziare con
Low Obfuscationper modifiche minime oppure conMedium Obfuscationper una protezione equilibrata. I preset VM offrono il livello di sicurezza più elevato.3. Fare clic su "Obfuscate"
Premere il pulsante Obfuscate per trasformare il codice. L'output protetto compare nel pannello di destra.
4. Copiare o scaricare
Utilizzare il pulsante Copy oppure Download per ottenere il codice offuscato. L'output è pronto per l'uso in produzione.
Compatibilità del codice Importante
L'offuscamento (sia VM sia non VM) trasforma il codice in modi che incidono su alcuni comportamenti del runtime JavaScript. Il codice non deve dipendere dalle funzionalità seguenti:
function.toString()/class.toString()L'offuscamento modifica completamente la rappresentazione del codice sorgente. Il codice che analizza o confronta il sorgente di una funzione smetterà di funzionare.
function.name/class.nameI nomi di funzioni e classi vengono sostituiti con identificatori casuali. Il codice che si affida a
.nameper il logging, la serializzazione o la reflection otterrà nomi offuscati.
// Before obfuscation
function calculatePrice() { return 100; }
console.log(calculatePrice.name); // "calculatePrice"
console.log(calculatePrice.toString()); // "function calculatePrice() { return 100; }"
// After obfuscation
console.log(calculatePrice.name); // "_0x1a2b3c" (random)
console.log(calculatePrice.toString()); // Completely transformed code
Opzioni di base
Prima di procedere all'offuscamento, occorre configurare le seguenti opzioni di base in funzione dell'ambiente di destinazione.
Target target
Specifica l'ambiente di esecuzione del codice offuscato:
browser(predefinito) - ambiente standard di una pagina web. Il codice prodotto è identico a quello del targetnode, ma alcune opzioni specifiche del browser non possono essere utilizzate con il targetnode.browser-no-eval- identico abrowser, ma l'output non utilizzaeval(). Da impiegare quando la pagina di destinazione applica una Content Security Policy che vietaeval/unsafe-eval.node- ambiente Node.js. Le opzioni specifiche del browser sono disattivate (richiedonowindow/documente in Node non avrebbero effetto o genererebbero un errore). Alcune difese divmSelfDefendingche si basano su API disponibili solo nel browser - rilevamento dei browser headless, ripristino di un realm pulito tramite iframe, controlli anti-inspector e sul DOM - non vengono generate per questo target.service-worker- contesto Service Worker. Nessunwindow, nessundocumente un oggetto globaleselfdifferente.userscript- sandbox di un gestore di userscript (ad esempio Tampermonkey). Le difese divmSelfDefendingvengono adattate di conseguenza. Richiede l'offuscatore v6.9.0+.bytenode- per codice destinato a essere compilato in.jsccon bytenode. Richiede l'offuscatore v6.13.0+.
Strict Mode strictMode
Controlla il modo in cui l'offuscatore gestisce la strict mode di JavaScript:
Auto(predefinito) - rileva automaticamente la strict mode dal codice. L'offuscatore analizza il codice alla ricerca delle direttive"use strict"Enable- forza il trattamento in strict mode per tutto il codice, indipendentemente dalla presenza di"use strict"Disable- solo le direttive"use strict"esplicitamente presenti nel codice sorgente vengono considerate strict mode
Comprendere i preset
I preset sono combinazioni di opzioni preconfigurate, suddivise in due gruppi distinti:
Preset VM Pro (virtualizzazione in bytecode)
| Preset | Sicurezza | Prestazioni | Caratteristiche |
|---|---|---|---|
VM Low | Buona | ~10x | VM di base, dispatch indiretto |
VM Medium | Elevata | ~12-15x | + Shuffle degli opcode, codifica, decoy |
VM High | Molto elevata | ~15-18x | + Dead code, opcode con stato, codifica dello stack |
VM Ultra High | Massima | ~20x+ | + Livelli di offuscamento non VM |
I valori relativi alle prestazioni sono medie: l'impatto effettivo dipende in larga misura dal codice (ad esempio il codice con molta ricorsione o con cicli eseguiti di frequente risulterà sensibilmente più lento).
Preset non VM (offuscamento standard)
| Preset | Protezione | Prestazioni | Caratteristiche |
|---|---|---|---|
Default | Di base | Minimo | String array, semplificazione |
Low | Leggera | ~1.1x | + Self-defending, disattivazione della console |
Medium | Moderata | ~1.5x | + Control flow, dead code, base64 |
High | Elevata | ~2x | + Debug protection, codifica rc4 |
Panoramica dell'interfaccia
- Editor di input - consente di incollare o digitare il codice sorgente JavaScript. È possibile trascinare i file oppure utilizzare il pulsante di caricamento. Sono supportati anche i file HTML con script inline Pro.
- Pannello di output - mostra il risultato offuscato. Utilizzare i pulsanti Copy o Download per ottenere il codice protetto.
- Selettore dei preset - consente di scegliere tra preset VM e non VM. I preset VM sono raggruppati in cima all'elenco. Il preset determina le opzioni di base, che restano comunque personalizzabili.
- Pannello delle opzioni - permette di regolare nel dettaglio le impostazioni di offuscamento. Facendo clic sull'icona
?accanto a una qualsiasi opzione se ne consulta la documentazione. - Pulsante Obfuscate - trasforma il codice utilizzando le opzioni selezionate. I preset VM vengono elaborati lato server, mentre quelli non VM vengono eseguiti nel browser.
- Caricamento multiplo di file Pro - consente di elaborare più file contemporaneamente e di scaricarli in un archivio ZIP.
- Pannello della cronologia Pro - permette di accedere agli offuscamenti precedenti e di ripristinare input e output.
