Browser Environment
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 :
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.
Un build déclaré transport: 'https' ne fonctionne correctement que là où il est réellement servi via https:. Tout autre schéma le corrompt : ne le déclarez donc que si tous les contextes qui chargent votre build de production sont en HTTPS. Cela exclut :
- le
http://simple, y comprishttp://localhosten développement ; file://- Electron, Cordova et autres applications empaquetées ;- les intégrations
blob:etabout:- un bundle exécuté dans une iframeabout:blankousrcdoc.
Une redirection HTTP→HTTPS côté client affiche tout de même d'abord la page HTTP : le bundle ne doit donc pas s'exécuter avant la fin de la redirection.
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.
Un build déclaré hosting: 'remote' ne fonctionne correctement que lorsqu'il est chargé depuis un hôte distant. Un bundle ouvert depuis un environnement local - localhost, un serveur de développement, file:// - est traité comme une incohérence, par conception : ne le déclarez donc que si tous les contextes qui chargent votre build de production sont servis à distance, et laissez-le hors des builds utilisés pour le développement local, les tests et la CI.
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.
hookedBuiltins assouplit délibérément la détection des altérations : une fois défini, un analyste qui enveloppe ces mêmes fonctions natives pour inspecter votre code n'est plus arrêté non plus. La virtualisation de la VM, les protections anti-débogage et les contrôles d'intégrité ne sont pas affectés. Activez-le uniquement lorsque votre runtime de production est connu pour intercepter des fonctions natives et que cette garantie plus faible est acceptable.
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.
Dans le tableau de bord, les contrôles Transport, Hosting et Hooked Builtins se trouvent dans le panneau Protection avancée. Chacun ne devient modifiable qu'une fois la protection associée activée - VM Self Defending pour Transport et Hooked Builtins, VM Debug Protection pour Hosting - et la cible compatible.
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.
