日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Windows保护模式学习笔记(八)—— 页目录表基址/页表基址

發布時間:2025/3/21 windows 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows保护模式学习笔记(八)—— 页目录表基址/页表基址 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Windows保護模式學習筆記(八)—— 頁目錄表基址/頁表基址

    • 要點回顧
    • 一、頁目錄表基址
      • 實驗:拆分線性地址C0300000,并查看其對應的物理頁
        • 第一步:打開一個進程,獲得它的Cr3
        • 第二步:查看進程的PDT表
        • 第三步:拆分線性地址
        • 第四步:查看線性地址對應的物理頁
      • 實驗總結
    • 二、頁表基址
      • 實驗:拆分線性地址C0000000,并查看其對應的物理頁
        • 第一步:打開一個進程,獲得它的Cr3
        • 第二步:查看進程的PDT表
        • 第三步:拆分線性地址
        • 第四步:查看線性地址指向的PDE所對應的PTT表
        • 第五步:查看線性地址C0001000對應的PTT表
      • 實驗總結
    • 總結

要點回顧

在上一節課課后題中我們提到過,如果系統要保證某個線性地址是有效的,那么必須為其填充正確的PDEPTE

如果我們想填充PDE與PTE,那么必須能夠訪問PDTPTT,這樣就存在2個問題:

  • 一定已經有“人”為我們訪問PDT與PTT掛好了PDE與PTE,我們只用找到這個線性地址就可以了
  • 這個為我們掛好PDE與PTE的“人”是誰?
  • 注意:
    CR3中存儲的是物理地址,不能在程序中直接讀取的。如果想讀取,也要把Cr3的值掛到PDT和PTT中才能訪問,那么怎么通過線性地址訪問PDT和PTT呢?

    注意:以下所有實驗的分頁方式均為10-10-12分頁

    一、頁目錄表基址

    頁目錄表基址 = 線性地址:C0300000

    實驗:拆分線性地址C0300000,并查看其對應的物理頁

    第一步:打開一個進程,獲得它的Cr3

    我這里打開的是notepad.exe

    第二步:查看進程的PDT表


    注意PDT表中的數據

    第三步:拆分線性地址

    十六進制:C0300000 =二進制:1100 0000 001100 0000 000000 0000 0000 =十六進制:300300000

    第四步:查看線性地址對應的物理頁

    注意:若不知道怎么查找物理頁可以翻看前兩篇筆記

    可以發現 物理頁的內容PDT表的內容 完全相同

    實驗總結

  • 線性地址C0300000對應的物理頁就是頁目錄表
  • 這個物理頁即頁目錄表本身也是頁表
  • 這個物理頁是一張特殊的頁表,每一項PTE指向的不是普通的物理頁,而是指向其它的頁表
  • 訪問頁目錄表的公式:C0300000 + PDI*4(I=index)
  • 結構圖如下:

    二、頁表基址

    頁表基址 = 線性地址:C0000000

    實驗:拆分線性地址C0000000,并查看其對應的物理頁

    第一步:打開一個進程,獲得它的Cr3

    我這里打開的是notepad.exe

    第二步:查看進程的PDT表


    查看前三個PDE所對應的PTT表

    第一張PTT表:

    第二張PTT表:

    第三張PTT表:

    第三步:拆分線性地址

    十六進制:C0000000 =二進制:1100 0000 000000 0000 000000 0000 0000 =十六進制:300000000

    第四步:查看線性地址指向的PDE所對應的PTT表


    查看前三個PTE所對應的物理頁

    第一張物理頁:

    第二張物理頁:

    第三張物理頁:

    可以發現 每一項PTE所指向的物理頁的內容每一個PDE所指向的PTT表的內容完全相同

    第五步:查看線性地址C0001000對應的PTT表


    發現線性地址C0001000指向的PTT表的第一項PTE線性地址C0000000指向的PTT表的第二項PTE

    實驗總結

  • 頁表被映射到了從0xC0000000~0xC03FFFFF的4M地址空間
  • 在這1024個表中有一張特殊的表:頁目錄表
  • 頁目錄被映射到了0xC0300000開始處的4K地址空間
  • 訪問頁表的公式:0xC0000000 + PDI*4096 + PTI*4(I=index)
  • 結構圖如下:

    總結

  • 有了0xC0300000和0xC0000000能做什么:
    掌握了這兩個地址,就掌握了一個進程所有的物理內存讀寫權限
  • 公式總結:
    訪問頁目錄表的公式:C0300000 + PDI*4(I=index)
    訪問頁表的公式:0xC0000000 + PDI*4096 + PTI*4(I=index)
  • 總結

    以上是生活随笔為你收集整理的Windows保护模式学习笔记(八)—— 页目录表基址/页表基址的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。