AMD VMCB 结构详解:虚拟化控制块内部布局

VMCB(Virtual Machine Control Block)是 AMD SVM 唯一的虚拟化状态容器。它分为控制区(0x000-0x3FF)、保存区(0x400-0xFFF)与截获位图(control 区内的专用区域),理解其布局才能正确编写 SVM Hypervisor。

核心概念

截获位图

控制区内含三张位图(读写 CR、读写 DR、异常),置位即表示截获对应事件。

事件注入字段

控制区 0x60 处可写入注入事件编码(类型、向量、错误码),用于向 guest 注入中断/异常。

保存区

0x400 起保存 guest 通用寄存器、段寄存器、CR0-CR17、EFER、RIP/RSP 等全部状态。

EXITCODE 与 EXITINFO

VMCB 偏移 0x08 记录最近 #VMEXIT 的原因码,0x10 是附加限定信息(如发生异常的 RIP)。

NP 控制字段

控制区 0x40 起为嵌套页表(NPT)控制:nCR3、gCR3、TLB 控制等。

VMCB 复用

#VMEXIT 后 VMCB 含 guest 最新状态,host 可修改后再次 VMRUN,无需重新初始化全部字段。

关键代码

// AMD VMCB 常用偏移(C 语言示意)
        #define VMCB_CTRL_INTERCEPT_CR     0x000
        #define VMCB_CTRL_INTERCEPT_DR     0x010
        #define VMCB_CTRL_INTERCEPT_EXC    0x020
        #define VMCB_CTRL_EXITCODE         0x008
        #define VMCB_CTRL_EXITINFO1        0x010
        #define VMCB_CTRL_EXITINFO2        0x018
        #define VMCB_CTRL_NPT_NCR3         0x040
        #define VMCB_CTRL_EVENT_INJ        0x060
        #define VMCB_SAVE_RAX              0x400
        #define VMCB_SAVE_RIP              0x418
        #define VMCB_SAVE_CR0              0x448
        #define VMCB_SAVE_CR3              0x458
        // 处理 #VMEXIT:
        exit_code = *(u32 *)(vmcb + VMCB_CTRL_EXITCODE);
        fault_rip = *(u64 *)(vmcb + VMCB_CTRL_EXITINFO2);

结构速查表

0x000 Control Area截获位图、事件注入、NPT 控制、退出信息等
0x008 EXITCODE最近的 #VMEXIT 原因码
0x010 EXITINFO1/2退出限定信息(地址、错误码等)
0x040 nCR3嵌套页表(NPT)根地址
0x060 Event Injection向 guest 注入中断/异常的事件编码
0x400 Save Areaguest 全部寄存器与系统状态

延伸阅读

虚拟化技术入门:从软件模拟到硬件辅助虚拟化

系统讲解虚拟化技术的基本概念、发展脉络与分类,帮助理解 Intel VT-x 与 AMD-V 在虚拟化中的核心作用。

硬件辅助虚拟化发展简史:VT-x 与 AMD-V 的演进之路

回顾 x86 硬件虚拟化三十年的演进:二进制翻译、Intel VT-x、AMD SVM、EPT/NPT 到现代虚拟化安全生态。

Intel VT-x 技术基础:VMX 模式与虚拟化核心概念

深入讲解 Intel VT-x 的 VMX root/non-root 两种模式、VM-exit/VM-entry 机制与 VMCS 虚拟机控制结构。

VMX 指令集与 VMCS 结构全解析

详解 VMXON/VMXOFF/VMLAUNCH/VMRESUME/VMREAD/VMWRITE 等指令语义与 VMCS 六大字段区域的布局。

VMX root 与 non-root 模式:VT 调试器的运行基石

解析 VMX root/non-root 双模式切换、VM-exit 事件流与 VT 调试器如何利用双模式实现隐形监控。

嵌套虚拟化原理:虚拟机中的虚拟机

讲解嵌套虚拟化的工作机制:VMCS/VMCB 嵌套、shadow VMCS 优化与 WSL2、云环境中的应用。

AMD SVM 虚拟化技术解析:AMD 的 VT 方案

全面解析 AMD SVM(Secure Virtual Machine)架构:VMCB、#VMEXIT、guest/host 模式与 AMD 硬件虚拟化设计。

AMD NPT 嵌套页表:硬件加速内存虚拟化

解析 AMD NPT 两级地址翻译机制、nCR3 根指针、TLB 控制与对性能和安全监控的影响。

AMD NPT 嵌套页表:硬件加速内存虚拟化

解析 AMD NPT 两级地址翻译机制、nCR3 根指针、TLB 控制与对性能和安全监控的影响。

AMD SVM 与 Intel VT-x 全面对比:差异与取舍

从模式设计、状态结构、截获机制、嵌套页表到生态支持,系统对比 AMD SVM 与 Intel VT-x 的异同。

AMD SVM 与 Intel VT-x 全面对比:差异与取舍

从模式设计、状态结构、截获机制、嵌套页表到生态支持,系统对比 AMD SVM 与 Intel VT-x 的异同。

AMD-Vi IOMMU:设备虚拟化与 DMA 隔离

解析 AMD-Vi IOMMU 的 DMA 重映射、中断重映射与设备直通机制,及其在安全上的作用。

AMD-Vi IOMMU:设备虚拟化与 DMA 隔离

解析 AMD-Vi IOMMU 的 DMA 重映射、中断重映射与设备直通机制,及其在安全上的作用。

如何开启 AMD SVM 虚拟化:BIOS 设置指南

手把手教你在 AMD 平台开启 SVM 虚拟化:BIOS 入口、命名差异、验证方法与常见问题。

VT 调试器工作原理:基于虚拟化的隐形调试

总览 VT 调试器的核心原理:Hypervisor 层隔离、EPT 无痕断点、VM-exit 事件处理与隐形内存访问。

VT 调试器核心功能详解

逐一解析 VT 调试器的核心功能:无痕断点、无痕 Hook、驱动级内存读写、进程保护与反反调试能力。

VT 调试器快速上手指南

从下载安装到设置第一个断点的完整上手教程:环境要求、驱动加载、附加目标与常见问题排查。

如何检测 CPU 是否支持虚拟化(VT-x / AMD-V)

通过任务管理器、systeminfo、CPU-Z 与命令行等多种方法,快速确认 CPU 虚拟化支持与启用状态。

VT Hook 技术原理:基于 EPT 的无痕钩子

深入解析 VT Hook 的两种核心实现:EPT 页表重映射 Hook 与写保护式 Hook,及其对抗完整性校验的原理。

隐形断点实现原理:反反调试的核心技术

从传统断点的检测面出发,解析 EPT 页级断点与虚拟化硬件断点的实现原理与反检测能力。

VT 进程保护:基于虚拟化的反结束、反注入与反调试

解析 VT 层进程保护的技术栈:EPT 内存隐藏、截获 TerminateProcess、防注入与防调试的完整方案。

VT 技术在反作弊中的应用:原理与对抗

探讨虚拟化技术在反作弊系统中的角色:从内核检测升级到 Hypervisor 级监控,以及绕过与反绕过的攻防博弈。

相关主题

更多资源

虚拟化技术入门:从软件模拟到硬件辅助虚拟化

系统讲解虚拟化技术的基本概念、发展脉络与分类,帮助理解 Intel VT-x 与 AMD-V 在虚拟化中的核心作用。

硬件辅助虚拟化发展简史:VT-x 与 AMD-V 的演进之路

回顾 x86 硬件虚拟化三十年的演进:二进制翻译、Intel VT-x、AMD SVM、EPT/NPT 到现代虚拟化安全生态。

Intel VT-x 技术基础:VMX 模式与虚拟化核心概念

深入讲解 Intel VT-x 的 VMX root/non-root 两种模式、VM-exit/VM-entry 机制与 VMCS 虚拟机控制结构。

VMX 指令集与 VMCS 结构全解析

详解 VMXON/VMXOFF/VMLAUNCH/VMRESUME/VMREAD/VMWRITE 等指令语义与 VMCS 六大字段区域的布局。

VMX root 与 non-root 模式:VT 调试器的运行基石

解析 VMX root/non-root 双模式切换、VM-exit 事件流与 VT 调试器如何利用双模式实现隐形监控。

嵌套虚拟化原理:虚拟机中的虚拟机

讲解嵌套虚拟化的工作机制:VMCS/VMCB 嵌套、shadow VMCS 优化与 WSL2、云环境中的应用。

AMD SVM 虚拟化技术解析:AMD 的 VT 方案

全面解析 AMD SVM(Secure Virtual Machine)架构:VMCB、#VMEXIT、guest/host 模式与 AMD 硬件虚拟化设计。

AMD NPT 嵌套页表:硬件加速内存虚拟化

解析 AMD NPT 两级地址翻译机制、nCR3 根指针、TLB 控制与对性能和安全监控的影响。

AMD NPT 嵌套页表:硬件加速内存虚拟化

解析 AMD NPT 两级地址翻译机制、nCR3 根指针、TLB 控制与对性能和安全监控的影响。

AMD SVM 与 Intel VT-x 全面对比:差异与取舍

从模式设计、状态结构、截获机制、嵌套页表到生态支持,系统对比 AMD SVM 与 Intel VT-x 的异同。

AMD-Vi IOMMU:设备虚拟化与 DMA 隔离

解析 AMD-Vi IOMMU 的 DMA 重映射、中断重映射与设备直通机制,及其在安全上的作用。

如何开启 AMD SVM 虚拟化:BIOS 设置指南

手把手教你在 AMD 平台开启 SVM 虚拟化:BIOS 入口、命名差异、验证方法与常见问题。

VT 调试器工作原理:基于虚拟化的隐形调试

总览 VT 调试器的核心原理:Hypervisor 层隔离、EPT 无痕断点、VM-exit 事件处理与隐形内存访问。

VT 调试器核心功能详解

逐一解析 VT 调试器的核心功能:无痕断点、无痕 Hook、驱动级内存读写、进程保护与反反调试能力。

VT 调试器快速上手指南

从下载安装到设置第一个断点的完整上手教程:环境要求、驱动加载、附加目标与常见问题排查。

如何检测 CPU 是否支持虚拟化(VT-x / AMD-V)

通过任务管理器、systeminfo、CPU-Z 与命令行等多种方法,快速确认 CPU 虚拟化支持与启用状态。

VT Hook 技术原理:基于 EPT 的无痕钩子

深入解析 VT Hook 的两种核心实现:EPT 页表重映射 Hook 与写保护式 Hook,及其对抗完整性校验的原理。

隐形断点实现原理:反反调试的核心技术

从传统断点的检测面出发,解析 EPT 页级断点与虚拟化硬件断点的实现原理与反检测能力。

VT 进程保护:基于虚拟化的反结束、反注入与反调试

解析 VT 层进程保护的技术栈:EPT 内存隐藏、截获 TerminateProcess、防注入与防调试的完整方案。

如何开启 AMD SVM 虚拟化:BIOS 设置指南

手把手教你在 AMD 平台开启 SVM 虚拟化:BIOS 入口、命名差异、验证方法与常见问题。

VT 技术在反作弊中的应用:原理与对抗

探讨虚拟化技术在反作弊系统中的角色:从内核检测升级到 Hypervisor 级监控,以及绕过与反绕过的攻防博弈。