Documentazione
/
Offuscamento VM
/

Browser Environment

Browser Environment

Pro
v7.9.0+

Dichiara come viene servita la tua build di produzione così che il codice protetto possa legarvi la propria integrità.

L'opzione browserEnvironment dichiara alcuni fatti sull'ambiente in cui viene servita la tua build di produzione, così che il codice protetto possa vincolarsi a essi o reagire di conseguenza. È un piccolo oggetto, e ogni campo ha effetto solo insieme a una protezione specifica: da sola l'opzione non fa nulla:

browserEnvironment: { transport: 'https', hosting: 'remote' }

transport

Lo schema con cui la produzione serve il bundle: 'http' o 'https'. Ha effetto con vmSelfDefending.

Con 'https', una copia servita via HTTP semplice da chi ne fa reverse engineering non funzionerà correttamente. 'http' o un campo non impostato non aggiunge questa protezione.

hosting

Da dove viene servito il bundle di produzione: 'remote' o 'local'. Ha effetto con vmDebugProtection, e solo sui target browser e browser-no-eval. Richiede l'offuscatore in versione 7.14.0 o successiva.

Con 'remote', una copia che un reverse engineer estrae ed esegue nel proprio ambiente locale viene trattata come una discrepanza dell'ambiente di esecuzione, e le difese anti-automazione reagiscono secondo quanto configurato in vmDefenseReaction. 'local' o un campo non impostato non aggiunge questa protezione.

hookedBuiltins

Impostalo su true per dichiarare che il runtime in cui gira la tua build di produzione sostituisce legittimamente le funzioni native (builtin) con wrapper JavaScript: l'anti-tamper dell'app stessa, la pagina host o altre estensioni del browser che condividono lo stesso realm. Ha effetto con vmSelfDefending. Richiede l'offuscatore in versione 7.15.0 o successiva.

Normalmente Self Defending tratta una funzione nativa sostituita come una manomissione e impedisce l'esecuzione della build. Con hookedBuiltins: true tollera un ambiente del genere e il codice protetto continua a funzionare. false o un campo non impostato mantiene il comportamento rigoroso.

browserEnvironment: { hookedBuiltins: true }

Target supportati

browserEnvironment si applica solo ai target browser, browser-no-eval e service-worker. Per node, userscript e bytenode l'opzione viene rifiutata: l'offuscamento fallisce con un errore di validazione invece di scartare silenziosamente l'impostazione. hosting è ancora più ristretto: viene accettato su un service worker, ma lì non vincola nulla.

Requisiti

  • transport e hookedBuiltins hanno effetto con vmSelfDefending, hosting con vmDebugProtection; altrimenti nessuno di essi fa nulla.
  • Un target browser, browser-no-eval o service-worker (browser o browser-no-eval per hosting).
  • Offuscatore in versione 7.9.0 o successiva per transport, 7.14.0 o successiva per hosting, 7.15.0 o successiva per hookedBuiltins.

Esempio

JavaScriptObfuscator.obfuscate(code, {
    vmObfuscation: true,
    vmSelfDefending: true,
    vmDebugProtection: true,
    target: 'browser',
    browserEnvironment: { transport: 'https', hosting: 'remote' }
});