EPT的开启与处理

Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html

EPT的开启与处理

1. EPT的概念

  EPT(Extend Page Table)扩展页表机制,可以让Guest机使用一份自己构建的页表

  GPA(Guest-Physical Address)、HPA(Host-Physical Address)

  当Guest访问内存时,其最终会生成一个GPA,其EPT的页表定义在Host端,处理器在收到guest传递过来的之后,通过EPT页表转换为HPA,从而访问物理内存。

  理解转换的关键思路:线性内存地址其只代表偏移,与页表基址的位置没有任何关系! 因此我们可以保证映射正确的基础之上随意更改页表基址,只要通过偏移得出正确的结果。

  

 

2. EPT的开启

  关于EPT的一个重要寄存器是IA_32_EPT_VPID_CAP,该寄存器表明当前CPU对EPT功能的支持情况。

  

 

 

3. EPT页表的构建 - EPTP

  EPTP(Extend Page Table Pointer),被称为页表拓展指针,当构建好整个页表之后,将该EPTP写入指定寄存器中,之后开启EPT模式。

  EPTP的数据结构如下,我们构建的是 Walk Length为3的,因此不需要构建PTT页表,只需构建 PML4、PDPTT、PDT 三张内存页表。

  

 

4.EPT violation导致的VM-exit

   四种情况会导致 EPT violation: not-present、read 、 write、fetch(execute);

   出现这种情况,我们先GPA->HPA,然后找到其页的数据结构将有关位置位;

   其 Exit-Qualification 获取的就是详情,其信息如下:

   

 

 

posted @ 2020-09-02 14:29  OneTrainee  阅读(1422)  评论(0编辑  收藏  举报