Press "Enter" to skip to content

Posts published in “Hypervisor”

Hypervisor From Scratch – Part 7: Using EPT & Page-Level Monitoring Features

Sina Karvandi 0

Introduction This is the 7th part of the tutorial Hypervisor From Scratch, and it’s about using the Extended Page Table (EPT) in an already running system. As you might know, paging is an essential part of managing memory on modern operating systems. Hypervisors use an additional paging table; this gives us an excellent opportunity to monitor different aspects of memory (Read-Write-Execute) without modifying the operating systems page-tables. EPT is a hardware mechanism, so it’s fast, but on the other hand,…

Hypervisor From Scratch – Part 6: Virtualizing An Already Running System

Sina Karvandi 17

Introduction Hello and welcome to the 6th part of the tutorial Hypervisor From Scratch. In this part, I try to give you an idea of how to virtualize an already running system using Hypervisor. Like other parts, this part is really dependent to the previous parts so make sure to read them first. Overview In the 6th part, we’ll see how we can virtualize our currently running system by configuring VMCS, then we use monitoring features to detect execution of…

Hypervisor From Scratch – Part 5: Setting up VMCS & Running Guest Code

Sina Karvandi 10

Introduction Hello and welcome back to the fifth part of the “Hypervisor From Scratch” tutorial series. Today we will be configuring our previously allocated Virtual Machine Control Structure (VMCS) and in the last, we execute VMLAUNCH and enter to our hardware-virtualized world! Before reading the rest of this part, you have to read the previous parts as they are really dependent. The full source code of this tutorial is available on GitHub : [https://github.com/SinaKarvandi/Hypervisor-From-Scratch] Note: Please keep in mind that…

VmcsAuditor – A Bochs-Based Hypervisor Layout Checker

Sina Karvandi 0

  Introduction  If you’ve ever had experience with developing your own hypervisor from scratch then you definitely faced with the problems of layout checking. What makes it hard to develop a hypervisor is the fact that Intel has a small number of errors for a huge checklist described in [CHAPTER 26] VM ENTRIES from Intel’s 64 and IA-32 Architectures Software Developer’s Manual including: 26.2 CHECKS ON VMX CONTROLS AND HOST-STATE AREA 26.3 CHECKING AND LOADING GUEST STATE  26.4 LOADING MSRS 26.5 EVENT…

Hypervisor From Scratch – Part 4: Address Translation Using Extended Page Table (EPT)

Sina Karvandi 2

Hello guys! Welcome to the fourth part of the “Hypervisor From Scratch”. This part is primarily about translating guest address through Extended Page Table (EPT) and its implementation. We also see how shadow tables work and other cool stuff. First of all, make sure to read the earlier parts before reading this topic as these parts are really dependent on each other also you should have a basic understanding of paging mechanism and how page tables work. A good article is…