Browser Environment
Deklarieren Sie, wie Ihr Produktions-Build ausgeliefert wird, damit der geschützte Code seine Integrität daran binden kann.
Die Option browserEnvironment deklariert Fakten über die Umgebung, in der Ihr Produktions-Build ausgeliefert wird, damit sich der geschützte Code an sie binden oder auf sie reagieren kann. Sie ist ein kleines Objekt, und jedes Feld wirkt zusammen mit genau einem bestimmten Schutz — für sich allein bewirkt die Option nichts:
browserEnvironment: { transport: 'https', hosting: 'remote' }
transport
Das Schema, über das Ihre Produktionsumgebung das Bundle ausliefert — 'http' oder 'https'. Wirkt zusammen mit vmSelfDefending.
Mit 'https' läuft eine Kopie, die ein Reverse Engineer über einfaches HTTP ausliefert, nicht korrekt. 'http' oder ein nicht gesetztes Feld fügt keinen solchen Schutz hinzu.
hosting
Woher Ihr Produktions-Bundle ausgeliefert wird — 'remote' oder 'local'. Wirkt zusammen mit vmDebugProtection, und nur für die Targets browser und browser-no-eval. Erfordert Obfuscator-Version 7.14.0 oder neuer.
Mit 'remote' wird eine Kopie, die ein Reverse Engineer abgreift und in seiner eigenen lokalen Umgebung ausführt, als Abweichung der Laufzeitumgebung behandelt, und die Automatisierungs-Abwehr reagiert so, wie es vmDefenseReaction vorgibt. 'local' oder ein nicht gesetztes Feld fügt keinen solchen Schutz hinzu.
hookedBuiltins
Setzen Sie es auf true, um zu deklarieren, dass die Laufzeitumgebung, in der Ihr Produktions-Build läuft, native Builtins legitim durch JavaScript-Wrapper ersetzt — der eigene Manipulationsschutz der App, die Host-Seite oder andere Browser-Erweiterungen im selben Realm. Wirkt zusammen mit vmSelfDefending. Erfordert Obfuscator-Version 7.15.0 oder neuer.
Self Defending behandelt ein ersetztes natives Builtin normalerweise als Manipulation und verhindert, dass der Build läuft. Mit hookedBuiltins: true toleriert es eine solche Umgebung, und der geschützte Code läuft weiterhin. false oder ein nicht gesetztes Feld behält das strikte Verhalten bei.
browserEnvironment: { hookedBuiltins: true }
Unterstützte Targets
browserEnvironment gilt nur für die Targets browser, browser-no-eval und service-worker. Für node, userscript und bytenode wird die Option abgelehnt — die Obfuskation schlägt mit einem Validierungsfehler fehl, statt die Einstellung stillschweigend zu verwerfen. hosting ist noch enger gefasst: Es wird für einen Service Worker akzeptiert, bindet dort aber nichts.
Voraussetzungen
transportundhookedBuiltinswirken zusammen mitvmSelfDefending,hostingmitvmDebugProtection; andernfalls bewirkt keines von ihnen etwas.- Ein Target
browser,browser-no-evaloderservice-worker(browseroderbrowser-no-evalfürhosting). - Obfuscator-Version 7.9.0 oder neuer für
transport, 7.14.0 oder neuer fürhosting, 7.15.0 oder neuer fürhookedBuiltins.
Beispiel
JavaScriptObfuscator.obfuscate(code, {
vmObfuscation: true,
vmSelfDefending: true,
vmDebugProtection: true,
target: 'browser',
browserEnvironment: { transport: 'https', hosting: 'remote' }
});