Documentación
/
Ofuscación VM
/

Browser Environment

Browser Environment

Pro
v7.9.0+

Declara cómo se sirve tu compilación de producción para que el código protegido pueda ligar a ella su integridad.

La opción browserEnvironment declara hechos sobre el entorno en el que se sirve tu compilación de producción, de modo que el código protegido pueda vincularse a ellos o reaccionar ante ellos. Es un objeto pequeño, y cada campo surte efecto junto con una protección concreta; por sí sola la opción no hace nada:

browserEnvironment: { transport: 'https', hosting: 'remote' }

transport

El esquema por el que tu producción sirve el bundle: 'http' o 'https'. Surte efecto con vmSelfDefending.

Con 'https', una copia que un ingeniero inverso sirva por HTTP plano no funcionará correctamente. 'http' o un campo sin definir no añade esa protección.

hosting

Desde dónde se sirve tu bundle de producción: 'remote' o 'local'. Surte efecto con vmDebugProtection, y solo en los targets browser y browser-no-eval. Requiere la versión 7.14.0 o posterior del ofuscador.

Con 'remote', una copia que un ingeniero inverso extraiga y ejecute en su propio entorno local se trata como una discrepancia del entorno de ejecución, y las defensas contra automatización reaccionan según lo configurado en vmDefenseReaction. 'local' o un campo sin definir no añade esa protección.

hookedBuiltins

Establézcalo en true para declarar que el runtime en el que se ejecuta su build de producción reemplaza legítimamente los builtins nativos por wrappers de JavaScript: el propio anti-tamper de la aplicación, la página anfitriona u otras extensiones del navegador que comparten el mismo realm. Surte efecto con vmSelfDefending. Requiere la versión 7.15.0 o posterior del ofuscador.

Normalmente, Self Defending trata un builtin nativo reemplazado como una manipulación e impide que el build se ejecute. Con hookedBuiltins: true, tolera ese entorno y el código protegido sigue ejecutándose. false o un campo sin establecer mantiene el comportamiento estricto.

browserEnvironment: { hookedBuiltins: true }

Targets admitidos

browserEnvironment solo se aplica a los targets browser, browser-no-eval y service-worker. Para node, userscript y bytenode la opción se rechaza: la ofuscación falla con un error de validación en lugar de descartar silenciosamente el ajuste. hosting es aún más restringido: se acepta en un service worker, pero allí no vincula nada.

Requisitos

  • transport y hookedBuiltins surten efecto con vmSelfDefending, y hosting con vmDebugProtection; de otro modo ninguno hace nada.
  • Un target browser, browser-no-eval o service-worker (browser o browser-no-eval para hosting).
  • Versión del ofuscador 7.9.0 o posterior para transport, 7.14.0 o posterior para hosting, 7.15.0 o posterior para hookedBuiltins.

Ejemplo

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