Documentation
/
Obfuscation VM
/

Environnement de navigateur

Environnement de navigateur

Pro
v7.9.0+

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

  • transport et hookedBuiltins prennent effet avec vmSelfDefending, hosting avec vmDebugProtection ; sans cela, aucun d'eux ne fait rien.
  • Une cible browser, browser-no-eval ou service-worker (browser ou browser-no-eval pour hosting).
  • Version de l'obfuscateur 7.9.0 ou ultérieure pour transport, 7.14.0 ou ultérieure pour hosting, 7.15.0 ou ultérieure pour hookedBuiltins.

Exemple

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