VM Self Defending
Assistir
Obfuscator.io Advanced Defenses: Self-Defending, Debug Protection, Domain Lock
A opção vmSelfDefending adiciona ao runtime da VM detecção de adulteração em várias camadas, verificações de integridade do código, proteção contra hooks e proteção contra engenharia reversa. Combinada com vmDebugProtection, ela torna consideravelmente mais difíceis as análises tanto manuais quanto assistidas por IA.
Esta opção força a ativação de vmBytecodeArrayEncoding e adiciona sobrecarga à execução da VM. Meça-a nos seus próprios caminhos frequentes.
Como cada detecção reage - e como relatar detecções ao seu backend em vez de apenas quebrar - é explicado em Telemetria e reações das defesas da VM; vmSelfDefending emite detecções nas categorias de reação automation, debugger, tamper e integrity.
Recomendado: use junto com vmDebugProtection, vmBytecodeArrayEncodingKey e vmBytecodeArrayEncodingKeyGetter para ter a máxima proteção.
Compatibilidade de execução
Detecção de ambientes sensíveis
Esta opção vincula o código ofuscado ao ambiente de execução de destino e usa fingerprinting avançado do navegador para detectar ferramentas de automação. O código protegido com esta opção vai quebrar intencionalmente quando executado em:
- Navegadores headless (Chrome/Chromium headless, PhantomJS)
- Ferramentas de automação de navegador (Puppeteer, Playwright, Cypress, Selenium/ChromeDriver, Nightmare)
- Node.js (quando
targetestá definido comobrowser) - jsdom ou emulações de DOM semelhantes no servidor
- Ambientes em que os builtins nativos do navegador foram interceptados ou substituídos (a menos que isso seja declarado com
browserEnvironment.hookedBuiltins)
O código vai funcionar corretamente em navegadores comuns (Chrome, Firefox, Safari, Edge), inclusive quando carregado dentro de iframes, extensões de navegador (content scripts) e Web Workers.
Escolha o target do ambiente de execução real. Builds Browser e Node contêm defesas diferentes: o target node omite as que dependem de APIs exclusivas do navegador, e um build browser executado no Node quebra como descrito acima.
Com browserEnvironment.hookedBuiltins definido como true (v7.15.0+), o Self Defending tolera um ambiente de execução que substitui legitimamente builtins nativos por wrappers JavaScript em vez de tratá-los como adulteração, de modo que o código protegido continua rodando ali. Isso relaxa deliberadamente a detecção de hooks em builtins; a virtualização da VM, a antidepuração e as proteções de integridade não são afetadas. O campo transport da mesma opção vincula o build ao esquema pelo qual ele é servido.
O Self Defending verifica a integridade da própria saída, então não minifique, formate nem reescreva de outra forma o código ofuscado depois. Rode essas ferramentas no seu código-fonte antes da etapa de ofuscação.
Testes e CI
Essas defesas também agem contra seus próprios agentes, automações e depuradores. Elas podem interromper a execução, lançar erros sem relação aparente ou produzir resultados incorretos. Esta opção foi projetada para impedir análises automatizadas e não pode ser usada com segurança com nenhum framework de automação, então rode os testes funcionais em um build de testes separado com vmSelfDefending desativado. Testes e CI lista o conjunto completo de sobrescritas para esse build.
