VM Self Defending
Guarda
Obfuscator.io Advanced Defenses: Self-Defending, Debug Protection, Domain Lock
L'opzione vmSelfDefending aggiunge al runtime della VM un rilevamento delle manomissioni a più livelli, controlli di integrità del codice, anti-hooking e protezione contro il reverse engineering. Combinata con vmDebugProtection, rende molto più difficile sia l'analisi manuale sia quella assistita dall'IA.
Questa opzione forza l'attivazione di vmBytecodeArrayEncoding e aggiunge un overhead all'esecuzione della VM. Misuralo sui tuoi percorsi frequenti.
Il modo in cui reagisce ciascun rilevamento, e come segnalare i rilevamenti al tuo backend invece di limitarti a interrompere l'esecuzione, è descritto in Telemetria e reazioni delle difese VM; vmSelfDefending emette rilevamenti nelle categorie di reazione automation, debugger, tamper e integrity.
Consigliato: usala insieme a vmDebugProtection, vmBytecodeArrayEncodingKey e vmBytecodeArrayEncodingKeyGetter per la massima protezione.
Compatibilità di esecuzione
Rilevamento di ambienti sensibili
Questa opzione vincola il codice offuscato al suo ambiente di esecuzione di destinazione e usa tecniche avanzate di fingerprinting del browser per rilevare gli strumenti di automazione. Il codice protetto con questa opzione smetterà intenzionalmente di funzionare se eseguito in:
- Browser headless (Chrome/Chromium headless, PhantomJS)
- Strumenti di automazione del browser (Puppeteer, Playwright, Cypress, Selenium/ChromeDriver, Nightmare)
- Node.js (quando
targetè impostato subrowser) - jsdom o emulazioni simili del DOM lato server
- Ambienti in cui le funzioni native integrate del browser sono state intercettate o sostituite (a meno che non siano dichiarate con
browserEnvironment.hookedBuiltins)
Il codice funzionerà correttamente nei normali browser (Chrome, Firefox, Safari, Edge), anche quando viene caricato all'interno di iframe, estensioni del browser (content script) e Web Worker.
Scegli il target in base al runtime effettivo. Le build per browser e per Node contengono difese diverse: il target node omette quelle che si basano su API disponibili solo nel browser, e una build browser eseguita con Node smette di funzionare come indicato sopra.
Con browserEnvironment.hookedBuiltins impostato su true (v7.15.0+), Self Defending tollera un runtime che sostituisce legittimamente le funzioni native integrate con wrapper JavaScript invece di considerarle una manomissione, così il codice protetto continua a funzionare. Questo allenta deliberatamente il rilevamento degli hook sulle funzioni integrate; la virtualizzazione della VM, l'anti-debugging e le protezioni di integrità non ne sono influenzati. Il campo transport della stessa opzione vincola la build allo schema con cui viene servita.
Self Defending verifica l'integrità del proprio output, quindi non minificare, formattare né riscrivere in altro modo il codice offuscato dopo la sua generazione. Esegui questi strumenti sul sorgente prima della fase di offuscamento.
Test e CI
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. Questa opzione è progettata per impedire l'analisi automatizzata e non può essere usata in sicurezza con alcun framework di automazione, quindi esegui i test funzionali su una build di test separata con vmSelfDefending disattivato. Test e CI elenca l'insieme completo delle sovrascritture per quella build.
