Developer knowledge network ยท moderated exchange

UnreliableCode Community

Developer Research, Reverse Engineering & Coding Community

Knowledge indexLive
4Categories
919Threads
2.8KPosts
Analysis

Trapping CR3 register changes in a Type-2 Intel VT-x Hypervisor

hypervisor_hank
Kernel Wizard
MEMBER
Rep: 108
Join Date: Feb 2020
Posts: 17
Thanks: 44
1 months ago ยท Jul 11, 2026 2:13 PM
#1

How a Type-2 Hypervisor intercepts CR3 page table directory swaps:

  1. In the VMCS (Virtual Machine Control Structure), enable CPU_BASED_CR3_LOAD_EXITING bit in VMCS_PROC_BASED_EXEC_CONTROLS.
  2. Whenever guest OS or anti-cheat executes mov cr3, rax:
  3. The CPU triggers an immediate #VMEXIT to hypervisor VMX root mode.
  4. Hypervisor reads the new CR3 target from VMCS_EXIT_QUALIFICATION, logs the guest game process DirectoryTableBase, and executes __vmx_vmresume().

Guest software has 0 awareness that its CR3 operations were intercepted!

kernel_komrade
Driver Dev
MEMBER
Rep: 145
Join Date: Feb 2019
Posts: 26
Thanks: 45
1 months ago ยท Jul 11, 2026 4:58 PM
#2

With hypervisor CR3 trapping, you always know the exact active page directory base of protected game processes.

stack_smasher
Kernel Explorer
MEMBER
Rep: 111
Join Date: Feb 2019
Posts: 30
Thanks: 18
1 months ago ยท Jul 12, 2026 3:42 AM
#3

Hardware virtualization is the ultimate root of trust.