Browser Environment
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
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:
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, incluindohttp://localhostem desenvolvimento;file://- Electron, Cordova e outros apps empacotados;- incorporações
blob:eabout:- um bundle executando dentro de um iframeabout:blankousrcdoc.
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.
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
transportehookedBuiltinstêm efeito comvmSelfDefending, ehostingcomvmDebugProtection; caso contrário, nenhum deles faz nada.- Um target
browser,browser-no-evalouservice-worker(browseroubrowser-no-evalparahosting). - Ofuscador na versão 7.9.0 ou posterior para
transport, 7.14.1 ou posterior parahosting, 7.15.0 ou posterior parahookedBuiltins.
