VM Debug Protection

Pro

Смотреть

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

Смотреть на YouTube

Опция vmDebugProtection добавляет в среду выполнения VM меры противодействия отладке, что значительно затрудняет реверс-инжиниринг защищённого кода. Реакция на каждое срабатывание задаётся категориями debugger, automation и sandbox опции vmDefenseReaction.

Если browserEnvironment.hosting имеет значение 'remote' (v7.14.1+), Debug Protection также привязывает сборку к тому, что она отдаётся с удалённого хоста: копия, отдаваемая с локального хоста разработки, считается несоответствием среды выполнения, и срабатывают защиты от автоматизации.

Эти защиты действуют и против ваших собственных агентов, средств автоматизации и отладчиков. Они могут остановить выполнение, выбросить посторонние ошибки или выдать неверные результаты. Для функциональных тестов используйте отдельную тестовую сборку; в разделе Тестирование и CI показано, какие опции в ней переопределяются.

Обнаружение инспектора

Начиная с обфускатора 8.0.0, vmDebugProtection принимает не только логическое значение, но и объект. Объект оставляет Debug Protection включённой, но ослабляет один детектор:

JavaScript

inspectorDetection (по умолчанию включён) обнаруживает подключённый инспектор Chrome DevTools Protocol или активный отладчик и реагирует на них. Открытие инструментов разработчика в браузере подключает такой сеанс, поэтому открытый инспектор обнаруживается и вызывает реакцию. Оставляйте его включённым в продакшене; выключайте, только если ваши пользователи открывают инструменты разработчика по легитимным причинам. В панели управления это вложенный переключатель Inspector Detection под VM Debug Protection (v8.0.0+), который появляется, когда Debug Protection включена.

Фреймворки автоматизации. При включённом inspectorDetection (по умолчанию) управление защищённой страницей через инструмент на основе CDP (Puppeteer, Playwright, Selenium/ChromeDriver) распознаётся как подключённый инспектор. vmDebugProtection: { inspectorDetection: false } отключает только детектор инспектора; детектор автоматизации Debug Protection по-прежнему может реагировать на управляемый браузер. Для сборок автоматических тестов следуйте разделу Тестирование и CI, где отключаются vmDebugProtection и vmSelfDefending.

Content Security Policy

Если ваша Content Security Policy запрещает динамическое выполнение кода (без unsafe-eval), используйте target browser-no-eval и проверьте результат под этой политикой. Этот target использует запасной механизм для проверок, которые иначе опираются на динамическое выполнение. То же относится к браузерным расширениям со строгой CSP: для наилучшей совместимости используйте browser-no-eval.