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 獲取的就是詳情,其信息如下:

   

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章