-
-
[分享]vt-x反作弊思路猜想
-
发表于: 2天前 699
-
VT-x: Intel虚拟化技术
VMXON: 启动 VT-x 驱动
Hyper-V: 它是一个 VT-x 驱动
当 Hyper-V 开启时, 其余 VT-x 驱动无法启动, 因为 VMX 只能被一个 Hypervisor 占用
反作弊防御思路:
一、方式1:反作弊自己就是 Hypervisor(最强模式)
这种情况系统未启用 Hyper-V 反作弊在早期阶段启动, 比 Windows 内核更早抢先执行 VMXON 自己成为 VMX Root , 此时 Hyper-V 反而无法启动, 因为 VMX 已被占用, 这类方案要求驱动开机极早启动并且有完整的 VMX 实现, 对系统版本高度适配
一、方式2:依赖 Hyper-V(常见)
如果系统已启用 Hyper-V, 那么反作弊不会再执行 VMXON, 它会运行在 Windows 内核利用 VBS(Virtualization-Based Security) / HVCI(内存完整性) 环境通过 Hyper-V 提供的隔离机制获得更高信任级别, 这种情况下它不会自己 VMXON 而是运行在 Hyper-V 之上
方式2的理解可以参考VMware的嵌套虚拟化(Nested Virtualization), 当你系统中启用了 Hyper-V 然后在其上运行 VMware Workstation 这种情况不是“两个 VMXON 抢占”,而是 Hyper-V 占用真实硬件, 而 VT-x VMware 使用 Hyper-V 提供的虚拟 VT-x
一、方式3:完全不使用虚拟化
更多反作弊是根本不碰 VT-x 它们只做内核完整性监控\驱动枚举\页表校验\调试检测, 这类不会涉及 VMXON
那么即便是系统已经启动Hyper-V能否还能抢先占据VMXON?
现实中: 几乎不可能, 因为在启用 Hyper-V 的系统上,启动顺序是这样的:
1 2 3 4 5 6 7 8 9 | UEFI↓Windows Boot Manager↓Hyper-V Hypervisor(最早加载)↓Windows 内核(被当作 Guest)↓普通驱动 |
关键点:Hyper-V 在 Windows 内核之前启动, 因此当普通驱动开始加载时VMX Root 早已被 Hyper-V 占用, 驱动里执行 VMXON 必然失败
为什么很多外挂要求关闭“内存完整性”: 因为开启“内存完整性” = 启用 VBS, VBS 依赖 Hyper-V, Hyper-V 会占用 VMX, 结果外挂自己的 VT-x 驱动无法 VMXON。
总结
以上内容是作者为入门 vt-x 学习的前置知识, 供大家参考讨论