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

   

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM