Dokumentacja
/
Obfuskacja VM
/

Browser Environment

Browser Environment

Pro
v7.9.0+

Zadeklaruj, jak serwowany jest produkcyjny build, aby chroniony kod mógł związać z nim swoją integralność.

Obejrzyj

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

Obejrzyj na YouTube

Opcja browserEnvironment deklaruje fakty o środowisku, w którym serwowany jest produkcyjny build, dzięki czemu chroniony kod może się z nimi związać lub na nie reagować. To niewielki obiekt, a każde pole działa wyłącznie razem z jedną konkretną ochroną - sama z siebie opcja nic nie robi:

JavaScript

transport

Schemat, przez który witryna produkcyjna serwuje bundle - 'http' lub 'https'. Działa razem z vmSelfDefending.

Przy 'https' kopia, którą inżynier wsteczny serwuje przez zwykłe HTTP, nie zadziała poprawnie. 'http' lub nieustawione pole nie dodaje takiej ochrony.

Build, który deklaruje transport: 'https', działa poprawnie wyłącznie tam, gdzie faktycznie jest serwowany przez https:. Każdy inny schemat go psuje, dlatego deklaruj to tylko wtedy, gdy każdy kontekst ładujący produkcyjny build używa HTTPS. Wyklucza to:

  • zwykłe http://, w tym http://localhost podczas developmentu;
  • file:// - Electron, Cordova i inne spakowane aplikacje;
  • osadzenia blob: i about: - bundle działający w ramce about:blank lub srcdoc.

Przekierowanie HTTP→HTTPS po stronie klienta i tak najpierw renderuje stronę HTTP, więc bundle nie może uruchomić się przed zakończeniem przekierowania.

hosting

Skąd serwowany jest produkcyjny bundle - 'remote' lub 'local'. Działa razem z vmDebugProtection i wyłącznie dla targetów browser oraz browser-no-eval. Wymaga obfuskatora w wersji 7.14.1 lub nowszej.

Przy 'remote' kopia serwowana z lokalnego hosta deweloperskiego jest traktowana jako niezgodność środowiska uruchomieniowego, a zabezpieczenia przed automatyzacją reagują zgodnie z konfiguracją vmDefenseReaction (zobacz Telemetria i reakcje zabezpieczeń VM). 'local' lub nieustawione pole nie dodaje takiej ochrony.

Build, który deklaruje hosting: 'remote', działa poprawnie tylko wtedy, gdy jest ładowany ze zdalnego hosta. Bundle otwarty z lokalnego serwera deweloperskiego jest celowo traktowany jako niezgodność, dlatego deklaruj to wyłącznie wtedy, gdy każdy kontekst ładujący produkcyjny build jest serwowany zdalnie, i nie dodawaj tego do buildów używanych do lokalnego rozwoju, testów i CI.

hookedBuiltins

Ustaw na true, aby zadeklarować, że środowisko uruchomieniowe, w którym działa Twój build produkcyjny, legalnie podmienia natywne wbudowane funkcje na wrappery JavaScript - własny mechanizm anti-tamper aplikacji, strona hosta lub inne rozszerzenia przeglądarki współdzielące ten sam realm. Działa razem z vmSelfDefending. Wymaga obfuskatora w wersji 7.15.0 lub nowszej.

Zwykle Self Defending traktuje podmienioną natywną funkcję wbudowaną jako manipulację i nie pozwala buildowi działać. Przy hookedBuiltins: true toleruje takie środowisko, a chroniony kod nadal działa. false lub nieustawione pole zachowuje ścisłe zachowanie.

JavaScript

hookedBuiltins celowo osłabia wykrywanie hooków na funkcjach wbudowanych: po jego ustawieniu analityk, który obłoży te same funkcje wbudowane hookami, aby przyjrzeć się Twojemu kodowi, również nie zostanie zatrzymany. Wirtualizacja VM, VM Debug Protection i kontrole integralności pozostają nienaruszone. Włączaj go tylko wtedy, gdy wiadomo, że Twoje środowisko produkcyjne hookuje funkcje wbudowane, a ta słabsza gwarancja jest akceptowalna.

Obsługiwane targety

browserEnvironment dotyczy wyłącznie targetów browser, browser-no-eval i service-worker. Dla node, userscript i bytenode nie ma żadnego efektu. hosting jest jeszcze węższe: na service workerze jest akceptowane, ale niczego tam nie wiąże.

W panelu elementy Transport, Hosting i Hooked Builtins znajdują się w sekcji Zaawansowane zabezpieczenia. Każdy z nich staje się edytowalny dopiero po włączeniu sparowanej z nim ochrony - VM Self Defending dla Transport i Hooked Builtins, VM Debug Protection dla Hosting - i gdy target go obsługuje.

Wymagania

  • transport i hookedBuiltins działają razem z vmSelfDefending, a hosting z vmDebugProtection; w przeciwnym razie żadne z nich nic nie robi.
  • Target browser, browser-no-eval lub service-worker (browser lub browser-no-eval dla hosting).
  • Obfuskator w wersji 7.9.0 lub nowszej dla transport, 7.14.1 lub nowszej dla hosting, 7.15.0 lub nowszej dla hookedBuiltins.

Przykład

JavaScript