文档
/
VM 混淆
/

VM Debug Protection

VM Debug Protection

Pro

观看

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

在 YouTube 观看

vmDebugProtection 选项为 VM 运行时增加反调试措施,使受保护代码的逆向工程难度显著提高。每项检测如何响应,由 vmDefenseReaction 的 debugger、automation 和 sandbox 类别决定。

当 browserEnvironment.hosting 设为 'remote'(v7.14.1+)时,Debug Protection 还会把构建绑定到从远程主机提供的场景:从本地开发主机提供的副本会被视为运行环境不匹配,自动化防御随之作出响应。

这些防御同样会作用于您自己的智能体、自动化工具和调试器。它们可能会停止执行、抛出无关的错误或产生错误的结果。请为功能测试使用独立的测试构建;测试与 CI 列出了该构建需要覆盖的选项。

检查器检测

从混淆器 8.0.0 起,vmDebugProtection 除布尔值外还接受对象。传入对象可以在保持 Debug Protection 开启的同时放宽单个检测器:

JavaScript

inspectorDetection(默认开启)会检测已连接的 Chrome DevTools Protocol 检查器或处于活动状态的调试器,并作出响应。打开浏览器的开发者工具就会连接这样的会话,因此打开的检查器会被检测到并触发响应。 生产环境中请保持开启;只有当您的用户确实需要正常打开开发者工具时才将其关闭。在控制台中,它对应 VM Debug Protection 下的 Inspector Detection 子开关(v8.0.0+),开启 Debug Protection 后才会显示。

自动化框架。 在 inspectorDetection 开启(默认)时,使用基于 CDP 的工具(Puppeteer、Playwright、Selenium/ChromeDriver)驱动受保护的页面,会被检测为已连接的检查器。vmDebugProtection: { inspectorDetection: false } 只会关闭检查器检测器;Debug Protection 的自动化检测器仍可能对被驱动的浏览器作出响应。对于自动化测试构建,请遵循测试与 CI,其中会禁用 vmDebugProtection 和 vmSelfDefending。

内容安全策略

如果您的内容安全策略(CSP)禁止动态求值(没有 unsafe-eval),请使用 browser-no-eval 目标,并在该策略下验证输出。此目标会为原本依赖动态求值的检查使用回退方案。具有严格 CSP 的浏览器扩展同样适用:请使用 browser-no-eval 以获得最佳兼容性。