Documentação
/
Ofuscação VM
/

Browser Environment

Browser Environment

Pro
v7.9.0+

Declare como seu build de produção é servido para que o código protegido possa vincular a ele sua integridade.

Assistir

Obfuscator.io Advanced Defenses: Self-Defending, Debug Protection, Domain Lock

Assistir no YouTube

A opção browserEnvironment declara fatos sobre o ambiente em que seu build de produção é servido, para que o código protegido possa se vincular a eles ou reagir a eles. É um objeto pequeno, e cada campo só tem efeito em conjunto com uma proteção específica - sozinha, a opção não faz nada:

JavaScript

transport

O esquema pelo qual seu site de produção serve o bundle: 'http' ou 'https'. Tem efeito com vmSelfDefending.

Com 'https', uma cópia que um engenheiro reverso sirva por HTTP simples não funcionará corretamente. 'http' ou um campo não definido não adiciona essa proteção.

Um build que declara transport: 'https' funciona corretamente apenas onde é de fato servido por https:. Qualquer outro esquema o corrompe, então declare isso somente quando todos os contextos que carregam seu build de produção usarem HTTPS. Isso exclui:

  • http:// simples, incluindo http://localhost em desenvolvimento;
  • file:// - Electron, Cordova e outros apps empacotados;
  • incorporações blob: e about: - um bundle executando dentro de um iframe about:blank ou srcdoc.

Um redirecionamento HTTP→HTTPS no lado do cliente ainda renderiza primeiro a página HTTP, portanto o bundle não pode ser executado antes de o redirecionamento terminar.

hosting

De onde seu bundle de produção é servido: 'remote' ou 'local'. Tem efeito com vmDebugProtection, e apenas nos targets browser e browser-no-eval. Requer o ofuscador na versão 7.14.1 ou posterior.

Com 'remote', uma cópia servida a partir de um host de desenvolvimento local é tratada como uma divergência do ambiente de execução, e as defesas contra automação reagem conforme configurado em vmDefenseReaction (veja Telemetria e reações das defesas da VM). 'local' ou um campo não definido não adiciona essa proteção.

Um build que declara hosting: 'remote' funciona corretamente somente quando é carregado de um host remoto. Um bundle aberto a partir de um servidor de desenvolvimento local é tratado como divergência por design, então declare-o apenas quando todos os contextos que carregam seu build de produção forem servidos remotamente, e deixe-o fora dos builds usados para desenvolvimento local, testes e CI.

hookedBuiltins

Defina como true para declarar que o runtime em que seu build de produção é executado substitui legitimamente builtins nativos por wrappers JavaScript: o próprio antiadulteração do app, a página host ou outras extensões de navegador que compartilham o mesmo realm. Tem efeito com vmSelfDefending. Requer o ofuscador na versão 7.15.0 ou posterior.

Normalmente, o Self Defending trata um builtin nativo substituído como adulteração e impede o build de rodar. Com hookedBuiltins: true, ele tolera esse ambiente e o código protegido continua rodando. false ou um campo não definido mantém o comportamento estrito.

JavaScript

hookedBuiltins relaxa deliberadamente a detecção de hooks em builtins: uma vez definido, um analista que instale hooks nesses mesmos builtins para inspecionar seu código também deixa de ser barrado. A virtualização da VM, as proteções antidepuração e as verificações de integridade não são afetadas. Ative-o apenas quando for sabido que seu runtime de produção instala hooks em builtins e essa garantia mais fraca for aceitável.

Targets suportados

browserEnvironment aplica-se apenas aos targets browser, browser-no-eval e service-worker. Para node, userscript e bytenode, ela não tem efeito. hosting é ainda mais restrito: é aceito em um service worker, mas não vincula nada ali.

No painel, os controles Transport, Hosting e Hooked Builtins ficam na seção Defesas avançadas. Cada um só se torna editável quando a proteção correspondente está ativada - VM Self Defending para Transport e Hooked Builtins, VM Debug Protection para Hosting - e o target o suporta.

Requisitos

  • transport e hookedBuiltins têm efeito com vmSelfDefending, e hosting com vmDebugProtection; caso contrário, nenhum deles faz nada.
  • Um target browser, browser-no-eval ou service-worker (browser ou browser-no-eval para hosting).
  • Ofuscador na versão 7.9.0 ou posterior para transport, 7.14.1 ou posterior para hosting, 7.15.0 ou posterior para hookedBuiltins.

Exemplo

JavaScript