@ -30,10 +30,12 @@ This project uses WDK and thus Windows Kernel functions to facilitate vmxlaunch.
### Why Write A Hypervisor?
### Why Write A Hypervisor?
Why write a type-2 (Intel or AMD) hypervisor? "To learn" is the typical response, but to learn what? To learn VMX instructions? To learn how to write a windows kernel driver? To learn how to use windbg? Although all of the prior reasons to write a hypervisor are important, learning how to read technical documents and extract what you need from the reading material is much more valuable than all of the other stuff one might learn while writing a hypervisor. This is best summed up as the old saying goes:
Why write a type-2 (Intel or AMD) hypervisor? "To learn" is the typical response, but to learn what? To learn VMX instructions? To gain more experience with WDK? To gain more experience with windbg? Although all of the prior reasons to write a hypervisor are important, learning how to read technical documents and extract what you need from the reading material is much more valuable than all of the other stuff one might learn while writing a hypervisor. This is best summed up as the old saying goes:
> “give a man a fish, he will feed himself for a day, teach a man to read the manual and he will make a hypervisor”
> “give a man a fish, he will feed himself for a day, teach a man to read the manual and he will make a hypervisor”
My second reason for learning about intel VT-x, is that hypervisors can be used to solve very complex programs, can be used to debug things which cant normally be debugged, and moniter memory accesses at a hardware level (EPT is on my to-do).
### VMCS
### VMCS
This section of the readme just contains notes and a list of things I stumbled on and took me a while to figure out and fix.
This section of the readme just contains notes and a list of things I stumbled on and took me a while to figure out and fix.