Browser Environment

Pro
v7.9.0+

Укажите, по какой схеме отдаётся ваша продакшен-сборка, чтобы защищённый код мог привязать к ней свою целостность.

Смотреть

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

Смотреть на YouTube

Опция browserEnvironment объявляет факты о среде, в которой отдаётся ваша продакшен-сборка, чтобы защищённый код мог привязать себя к ним или реагировать на них. Это небольшой объект, и каждое его поле действует только вместе с одной конкретной защитой - сама по себе опция ничего не делает:

JavaScript

transport

Схема, по которой ваш продакшен-сайт отдаёт бандл: 'http' или 'https'. Действует вместе с vmSelfDefending.

При 'https' копия, которую реверс-инженер раздаёт по обычному HTTP, не будет работать корректно. 'http' или неустановленное поле такой защиты не добавляет.

Сборка, объявленная с transport: 'https', работает корректно только там, где она действительно отдаётся по https:. Любая другая схема ломает её, поэтому объявляйте это только если каждый контекст, загружающий вашу продакшен-сборку, использует HTTPS. Сюда не входят:

  • обычный http://, включая http://localhost при разработке;
  • file:// - Electron, Cordova и другие упакованные приложения;
  • встраивания blob: и about: - бандл, работающий внутри iframe about:blank или srcdoc.

Клиентский редирект с HTTP на HTTPS всё равно сначала отрисовывает HTTP-страницу, поэтому бандл не должен запускаться до завершения редиректа.

hosting

Откуда отдаётся продакшен-бандл: 'remote' или 'local'. Действует вместе с vmDebugProtection и только для target browser и browser-no-eval. Требует обфускатор версии 7.14.1 или новее.

При 'remote' копия, отдаваемая с локального хоста разработки, считается несоответствием среды выполнения, и защиты от автоматизации реагируют так, как настроено в vmDefenseReaction (см. Телеметрия и реакции защиты VM). 'local' или неустановленное поле не добавляет такой защиты.

Сборка, объявленная с hosting: 'remote', работает корректно только при загрузке с удалённого хоста. Бандл, открытый с локального dev-сервера, намеренно считается несоответствием, поэтому объявляйте это только если каждый контекст, загружающий вашу продакшен-сборку, отдаётся удалённо, и не включайте это в сборки для локальной разработки, тестов и CI.

hookedBuiltins

Установите в true, чтобы объявить, что среда выполнения, в которой работает ваша продакшен-сборка, легитимно подменяет нативные встроенные объекты JavaScript-обёртками - собственная защита приложения от вмешательства, страница-хост или другие браузерные расширения в том же realm. Действует вместе с vmSelfDefending. Требует обфускатор версии 7.15.0 или новее.

Обычно Self Defending считает подменённый нативный встроенный объект вмешательством и не даёт сборке работать. При hookedBuiltins: true он допускает такую среду, и защищённый код продолжает работать. false или неустановленное поле сохраняет строгое поведение.

JavaScript

hookedBuiltins намеренно ослабляет обнаружение хуков встроенных объектов: как только оно установлено, аналитик, оборачивающий те же встроенные объекты для изучения вашего кода, тоже больше не останавливается. VM-виртуализация, VM Debug Protection и проверки целостности не затрагиваются. Включайте его только если известно, что ваша продакшен-среда хукает встроенные объекты, и такая ослабленная гарантия приемлема.

Поддерживаемые значения target

browserEnvironment применяется только к target browser, browser-no-eval и service-worker. Для node, userscript и bytenode она не действует. hosting ещё уже: для service worker оно принимается, но ничего там не привязывает.

В панели управления элементы Transport, Hosting и Hooked Builtins находятся в разделе Продвинутые защиты. Каждый из них становится редактируемым только после включения парной защиты - VM Self Defending для Transport и Hooked Builtins, VM Debug Protection для Hosting - и если target его поддерживает.

Требования

  • transport и hookedBuiltins действуют вместе с vmSelfDefending, hosting - вместе с vmDebugProtection; иначе ни одно из них ничего не делает.
  • Target browser, browser-no-eval или service-worker (browser или browser-no-eval для hosting).
  • Обфускатор версии 7.9.0 или новее для transport, 7.14.1 или новее для hosting, 7.15.0 или новее для hookedBuiltins.

Пример

JavaScript