VM Self Defending
Ver
Obfuscator.io Advanced Defenses: Self-Defending, Debug Protection, Domain Lock
La opción vmSelfDefending añade al runtime de la VM detección de manipulaciones en varias capas, comprobaciones de integridad del código, antihooking y protección contra la ingeniería inversa. Combinada con vmDebugProtection, hace considerablemente más difícil el análisis tanto manual como asistido por IA.
Esta opción fuerza la activación de vmBytecodeArrayEncoding y añade sobrecarga a la ejecución de la VM. Mídela en tus propias rutas frecuentes.
Cómo reacciona cada detección, y cómo notificar las detecciones a tu backend en lugar de limitarse a romper la ejecución, se explica en Telemetría y reacciones de defensa de la VM; vmSelfDefending emite detecciones en las categorías de reacción automation, debugger, tamper e integrity.
Recomendado: úsala junto con vmDebugProtection, vmBytecodeArrayEncodingKey y vmBytecodeArrayEncodingKeyGetter para obtener la máxima protección.
Compatibilidad de ejecución
Detección de entornos sensibles
Esta opción vincula el código ofuscado a su entorno de ejecución de destino y usa técnicas avanzadas de fingerprinting del navegador para detectar herramientas de automatización. El código protegido con esta opción se romperá intencionadamente cuando se ejecute en:
- Navegadores headless (Chrome/Chromium headless, PhantomJS)
- Herramientas de automatización del navegador (Puppeteer, Playwright, Cypress, Selenium/ChromeDriver, Nightmare)
- Node.js (cuando
targetesbrowser) - jsdom u otras emulaciones del DOM en el servidor
- Entornos en los que se han interceptado o reemplazado funciones nativas integradas del navegador (salvo que se declare con
browserEnvironment.hookedBuiltins)
El código funcionará correctamente en navegadores normales (Chrome, Firefox, Safari, Edge), también cuando se carga dentro de iframes, extensiones de navegador (content scripts) y Web Workers.
Elige el target según el entorno de ejecución real. Las compilaciones para navegador y para Node contienen defensas diferentes: el target node omite las que dependen de API exclusivas del navegador, y una compilación browser ejecutada en Node se rompe como se indica arriba.
Con browserEnvironment.hookedBuiltins establecido en true (v7.15.0+), Self Defending tolera un entorno de ejecución que reemplaza legítimamente funciones nativas integradas por envoltorios de JavaScript en lugar de tratarlos como manipulación, de modo que el código protegido sigue ejecutándose ahí. Esto relaja deliberadamente la detección de hooks sobre funciones integradas; la virtualización de la VM, la protección antidepuración y las protecciones de integridad no se ven afectadas. El campo transport de la misma opción vincula la compilación al esquema con el que se sirve.
Self Defending comprueba la integridad de su propia salida, así que no minifiques, formatees ni reescribas de ningún otro modo el código ofuscado después. Ejecuta esas herramientas sobre tu código fuente antes del paso de ofuscación.
Pruebas y CI
Estas defensas también actúan contra tus propios agentes, herramientas de automatización y depuradores. Pueden detener la ejecución, lanzar errores sin relación aparente o producir resultados incorrectos. Esta opción está diseñada para impedir el análisis automatizado y no puede usarse de forma segura con ningún framework de automatización, así que ejecuta las pruebas funcionales contra una compilación de pruebas separada con vmSelfDefending desactivada. Pruebas y CI enumera el conjunto completo de sobrescrituras para esa compilación.
