1. kvm内存虚拟化
kvm虚拟机的内存虚拟化,使用了内存转换技术,过程如下:GVA -> GPA -> HVA -> HPA
通过qemu启动了一个8G内存的虚拟机,查看内存smaps,可以发现有个内存就是8G,这个就是guest所使用的物理内存。
利用这个信息就可以窥探虚拟机内存中特定的信息。
2. 虚拟地址转换为物理地址的原理
内核文档 pagemap.txt 中描述如下:
内存中每一个页对应一个64位,也就是8字节的字段。假设虚拟地址为0xfe0020,其转换过程如下:
虚拟地址0xfe0020,其高52位(0xfe0020>>12)为0xfe0,也就是其虚拟页号为0xfe0。那么该虚拟页的信息处于/proc/self/pagemap这个文件中偏移量为0x