Документация
/

Browser Environment

Browser Environment

Pro
v7.9.0+

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

Опция 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 и только для таргетов browser и browser-no-eval. Требует обфускатор версии 7.14.0 или новее.

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

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

hookedBuiltins

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

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

JavaScript

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

Поддерживаемые таргеты

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

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

Требования

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

Пример

JavaScript