Environnement de navigateur
Déclarez la manière dont votre build de production est servi pour que le code protégé puisse y lier son intégrité.
L'option browserEnvironment déclare des faits sur l'environnement dans lequel votre build de production est servi, afin que le code protégé puisse s'y lier ou y réagir. C'est un petit objet, et chaque champ n'a d'effet qu'avec une protection précise — seule, l'option ne fait rien :
browserEnvironment: { transport: 'https', hosting: 'remote' }
transport
Le schéma par lequel votre production sert le bundle — 'http' ou 'https'. Prend effet avec vmSelfDefending.
Avec 'https', une copie qu'un rétro-ingénieur sert en HTTP simple ne fonctionnera pas correctement. 'http' ou un champ non défini n'ajoute pas cette protection.
hosting
L'endroit d'où votre bundle de production est servi — 'remote' ou 'local'. Prend effet avec vmDebugProtection, et uniquement pour les cibles browser et browser-no-eval. Nécessite la version 7.14.0 ou ultérieure de l'obfuscateur.
Avec 'remote', une copie qu'un rétro-ingénieur extrait et exécute dans son propre environnement local est traitée comme une incohérence de l'environnement d'exécution, et les défenses anti-automatisation réagissent selon la configuration de vmDefenseReaction. 'local' ou un champ non défini n'ajoute pas cette protection.
hookedBuiltins
Définissez-le sur true pour déclarer que le runtime dans lequel s'exécute votre build de production remplace légitimement les fonctions natives (builtins) par des wrappers JavaScript : l'anti-tamper de l'application elle-même, la page hôte ou d'autres extensions de navigateur partageant le même realm. Prend effet avec vmSelfDefending. Nécessite la version 7.15.0 ou ultérieure de l'obfuscateur.
Normalement, Self Defending considère une fonction native remplacée comme une altération et empêche le build de s'exécuter. Avec hookedBuiltins: true, il tolère un tel environnement et le code protégé continue de s'exécuter. false ou un champ non défini conserve le comportement strict.
browserEnvironment: { hookedBuiltins: true }
Cibles prises en charge
browserEnvironment ne s'applique qu'aux cibles browser, browser-no-eval et service-worker. Pour node, userscript et bytenode, l'option est rejetée : l'obfuscation échoue avec une erreur de validation au lieu d'ignorer silencieusement le réglage. hosting est encore plus restreint : il est accepté pour un service worker, mais n'y lie rien.
Prérequis
transportethookedBuiltinsprennent effet avecvmSelfDefending,hostingavecvmDebugProtection; sans cela, aucun d'eux ne fait rien.- Une cible
browser,browser-no-evalouservice-worker(browseroubrowser-no-evalpourhosting). - Version de l'obfuscateur 7.9.0 ou ultérieure pour
transport, 7.14.0 ou ultérieure pourhosting, 7.15.0 ou ultérieure pourhookedBuiltins.
Exemple
JavaScriptObfuscator.obfuscate(code, {
vmObfuscation: true,
vmSelfDefending: true,
vmDebugProtection: true,
target: 'browser',
browserEnvironment: { transport: 'https', hosting: 'remote' }
});