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é.
Regarder
Obfuscator.io Advanced Defenses: Self-Defending, Debug Protection, Domain Lock
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 site de 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 qui déclare 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.1 ou ultérieure de l'obfuscateur.
Avec 'remote', une copie servie depuis un hôte de développement 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 (voir Télémétrie et réactions des défenses VM). 'local' ou un champ non défini n'ajoute pas cette protection.
Un build qui déclare hosting: 'remote' ne fonctionne correctement que lorsqu'il est chargé depuis un hôte distant. Un bundle ouvert depuis un serveur de développement local 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-altération 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 interceptions de fonctions natives : 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. Elle n'a aucun effet pour node, userscript et bytenode. 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 la section Défenses avancées. 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.1 ou ultérieure pourhosting, 7.15.0 ou ultérieure pourhookedBuiltins.
