◉ Pulse
victim539 avatar
#67 today ▲ 51

victim539/simple-intel-hypervisor

C++ Other

A minimal VT-x hypervisor for Intel without EPT support.

Created Jul 21, 2026
Stars
23
Today
+1
Forks
0
Quality
85/100
Momentum
37

README

Fetched from GitHub on Oct 30, 2026, 10:15 PM UTC · README.md

View original on GitHub

Third-party content — Open Source Pulse is not the owner of this repository.

This README belongs to victim539/simple-intel-hypervisor and its contributors. We fetch it directly from the project’s public GitHub repository and display it for reference only. All text, code, images and trademarks remain the property of their respective authors. See the repository for its license terms. Copyright / takedown policy.

Simple Intel Hypervisor

A small Intel VT-x hypervisor for Windows x64.

I made this project to better understand how VMX works: entering VMX operation, setting up the VMCS, handling VM exits, and returning control to Windows without leaving the processor in a broken state.

This is a learning project and is not intended for production use.

Features

The driver enables VMX on every active logical processor and creates a separate VMXON region, VMCS, MSR bitmap, and host stack for each CPU.

Implemented VM-exit handlers:

  • CPUID
  • MOV CR
  • MOV DR
  • RDMSR and WRMSR
  • RDTSC and RDTSCP
  • XSETBV
  • Port I/O
  • HLT
  • VMCALL

The hypervisor can also inject #UD and #GP exceptions back into the guest.

A private VMCALL is used during driver unload to leave VMX operation and restore the original processor state.

Requirements

  • Windows 10 or Windows 11 x64
  • Intel processor with VT-x support
  • VT-x enabled in BIOS/UEFI
  • Visual Studio 2022
  • Windows Driver Kit

Hyper-V, VBS, or Memory Integrity may prevent the driver from using VT-x.

AMD processors are not supported.

Building

Open simple-intel-hv.sln, select the x64 platform, and build either the Debug or Release configuration.

The compiled driver will be placed in:

simple-intel-hv/x64/Debug/simple-intel-hv.sys

or:

simple-intel-hv/x64/Release/simple-intel-hv.sys

Loading

The driver must be signed, or Windows must be running in test-signing mode.

Register and start the driver:

sc.exe create simple-intel-hv type= kernel start= demand binPath= "C:\Path\To\simple-intel-hv.sys"
sc.exe start simple-intel-hv

Stop and remove it:

sc.exe stop simple-intel-hv
sc.exe delete simple-intel-hv

Project Structure

source/
├── driver.cpp
├── platform/
│   └── kernel.hpp
└── hv/
    ├── arch/       # VM-exit and segment assembly code
    ├── util/       # VMX memory allocation
    ├── vmcs/       # VMCS setup and VM-exit handling
    ├── vmx/        # VMX initialization and shutdown
    └── state.hpp   # Per-processor state

third_party/
└── ia32/           # Intel architecture definitions

Debugging

Internal failures call KeBugCheckEx with a short ASCII signature in the first argument. This makes it easier to find the failing code while analyzing a crash dump.

Signature Meaning
HVRIP Failed to advance guest RIP
HVINJ Failed to inject an exception
HVXCR Failed to read state for XSETBV
HVCR0 Failed to update guest CR0
HVCR3 Failed to update guest CR3
HVCR4 Failed to update guest CR4
HVCRG Invalid register during CR access
HVDRG Invalid register during DR access
HVMSR Failure during MSR handling
HVIOW Invalid I/O width
HVREAD Failed to read VMCS state
HVRD Failed to read guest state during shutdown

Limitations

This hypervisor does not implement:

  • Extended Page Tables
  • Nested virtualization
  • Virtual APIC
  • Complete interrupt virtualization
  • Guest memory isolation
  • Support for AMD-V

Unsupported VM exits currently result in a bugcheck. Silently continuing with an invalid guest state would make failures much harder to diagnose.

Use a virtual machine with nested virtualization enabled or a separate test system. Experimental VMX code can freeze or crash the entire machine.

Rendered by GitHub from the repository’s README. Scroll to read the full file.
First trending

Jul 22, 2026

first spotted on the list

Best rank

#10

highest position reached

Appearances

4

times on the trending list

Quality score

85

out of 100

Momentum

37

trend strength indicator

Star velocity

0.23

stars per day since creation

Activity — last 60 days

daily counts, collected every 6 hours
  • Stars
  • Forks
  • Merged PRs
  • Issues
  • Closed issues

Collecting activity data since launch — check back in a few days.

Star history

total stars per snapshot
18192021222324victim539/simple-intel-hypervisor · Jul 22, 2 AM UTC: 19 starsvictim539/simple-intel-hypervisor · Jul 22, 8 AM UTC: 20 starsvictim539/simple-intel-hypervisor · Jul 22, 2 PM UTC: 22 starsvictim539/simple-intel-hypervisor · Jul 22, 7 PM UTC: 23 stars2 AM11 AM7 PM

Rank history

position on trending · lower is better
#1#10#20#30#40#50#60#70#80Jul 22, 2 AM UTC: rank #10Jul 22, 8 AM UTC: rank #25Jul 22, 2 PM UTC: rank #71Jul 22, 7 PM UTC: rank #672 AM11 AM7 PM

3D card for your website

Live HTML card with a glass surface and pointer tilt. Paste the iframe on any website.

<iframe src="https://www.notionpulse.cc/embed/victim539/simple-intel-hypervisor" width="420" height="240" style="border:0;max-width:100%;background:transparent" loading="lazy" title="victim539/simple-intel-hypervisor — trending on Open Source Pulse"></iframe>

Stars badge

Show current stars in your README or profile. Auto-updates every 6 hours.

victim539/simple-intel-hypervisor stars badge
Markdown
[![victim539/simple-intel-hypervisor](https://www.notionpulse.cc/api/badge/victim539/simple-intel-hypervisor.svg)](https://www.notionpulse.cc/repo/victim539/simple-intel-hypervisor)
HTML
<a href="https://www.notionpulse.cc/repo/victim539/simple-intel-hypervisor"><img src="https://www.notionpulse.cc/api/badge/victim539/simple-intel-hypervisor.svg" alt="victim539/simple-intel-hypervisor stars badge" /></a>

Repository of the Day

#10 Repository of the Day

Repository of the Week

#10 Repository of the Week

Repository of the Month

#10 Repository of the Month