VM Debug Protection
Guarda
Obfuscator.io Advanced Defenses: Self-Defending, Debug Protection, Domain Lock
L'opzione vmDebugProtection aggiunge al runtime della VM misure anti-debugging che rendono molto più difficile il reverse engineering del codice protetto. Il modo in cui reagisce ciascun rilevamento è stabilito dalle categorie debugger, automation e sandbox di vmDefenseReaction.
Con browserEnvironment.hosting impostato su 'remote' (v7.14.1+), Debug Protection vincola inoltre la build a essere servita da un host remoto: una copia servita da un host di sviluppo locale viene trattata come una discrepanza dell'ambiente di esecuzione e le difese contro l'automazione reagiscono.
Queste difese agiscono anche contro i tuoi agenti, la tua automazione e i tuoi debugger. Possono interrompere l'esecuzione, generare errori non correlati o produrre risultati errati. Usa una build di test separata per i test funzionali; Test e CI mostra le opzioni che quella build sovrascrive.
Rilevamento dell'inspector
Dalla versione 8.0.0 dell'offuscatore, vmDebugProtection accetta un oggetto oltre a un booleano. Passando un oggetto, Debug Protection resta attiva mentre un singolo rilevatore viene allentato:
inspectorDetection (attivo per impostazione predefinita) rileva un inspector del Chrome DevTools Protocol collegato o un debugger attivo e reagisce di conseguenza. Aprire gli strumenti per sviluppatori del browser collega una sessione di questo tipo, quindi un inspector aperto viene rilevato e provoca una reazione. Tienilo attivo in produzione; disattivalo solo se i tuoi utenti aprono legittimamente gli strumenti per sviluppatori. Nella dashboard corrisponde al sotto-interruttore Inspector Detection sotto VM Debug Protection (v8.0.0+), che compare una volta attivata Debug Protection.
Dopo un rilevamento, solo ricaricare la pagina ripristina il codice. Chiudere gli strumenti per sviluppatori non ripristina il codice protetto: finché la pagina non viene ricaricata, ogni chiamata successiva lancia errori che non spiegano nulla, come Uncaught 0, oppure, con la reazione decoy, restituisce risultati errati. Ricaricando si perde tutto ciò che l'utente non ha salvato. Per salvarlo o mostrare prima un messaggio, esegui la tua risposta in vmDefenseHook, che viene chiamato prima che la difesa reagisca. Per il codice protetto, gli strumenti per sviluppatori e gli altri strumenti che si collegano tramite lo stesso protocollo sono indistinguibili, quindi permettere ai tuoi utenti di aprire gli strumenti per sviluppatori lascia entrare anche quegli strumenti.
Framework di automazione. Con inspectorDetection attivo (il comportamento predefinito), pilotare la pagina protetta con uno strumento basato su CDP (Puppeteer, Playwright, Selenium/ChromeDriver) viene rilevato come un inspector collegato. vmDebugProtection: { inspectorDetection: false } disattiva solo il rilevatore dell'inspector; il rilevatore di automazione di Debug Protection può comunque reagire a un browser pilotato. Per le build di test automatizzati, segui Test e CI, che disattiva vmDebugProtection e vmSelfDefending.
Content Security Policy
Se la tua Content Security Policy vieta la valutazione dinamica (senza unsafe-eval), usa il target browser-no-eval e convalida l'output con quella policy. Questo target usa un'alternativa per i controlli che altrimenti si basano sulla valutazione dinamica. Lo stesso vale per le estensioni del browser con una CSP restrittiva: usa browser-no-eval per la massima compatibilità.
