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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

101012

發布時間:2024/1/18 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 101012 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 10-10-12分頁

1、物理地址

線性地址、有效地址、物理地址

如下指令:

MOV eax,dword ptr ds:[0x12345678]

其中,0x12345678 是有效地址

ds.Base + 0x12345678 是線性地址

2、物理在哪里?

每個進程都有一個CR3,(準確的說是都一個CR3的值,CR3本身是
個寄存器,一個核,只有一套寄存器)
CR3指向一個物理頁,一共4096字節,如圖:

3、設置分頁模式

將noexecute 改成 execute

2、PDE/PTE

2、指向相同物理頁

<1> PTE可以沒有物理頁,且只能對應一個物理頁.

<2> 多個PTE也可以指向同一個物理頁.

3、PDE/PTE屬性

1、物理頁的屬性

物理頁的屬性 = PDE屬性 & PTE屬性

2、P位

線性地址0 為什么不能訪問呢?

沒有指定物理頁,指定物理頁就一定能訪問嗎?

先看PDE與PTE的P位 P=1 才是有效的物理頁

3、R/W 位

R/W = 0 只讀
R/W = 1 可讀可寫

實驗:

定義一個只讀類型的變量,再另一個線性地址指向相同的
物理頁,通過修改PDE/PTE屬性,實現可寫。

4、U/S 位

U/S = 0 特權用戶
U/S = 1 普通用戶

實驗:

修改一個高2G線性地址的PDE/PTE屬性,實現Ring3可讀.

比如:0x8003F00C

5、P/S位

只對PDE有意義,PS == PageSize的意思 當PS==1的時候 PDE直接指向
物理頁 無PTE,低22位是頁內偏移。

線性地址只能拆成2段:大小為4MB 俗稱“大頁”

舉例:

分析8043F00C線性地址的PDE屬性。

6、A 位

是否被訪問(讀或者寫)過 訪問過置1 即使只訪問一個字節也會導致PDE PTE置1

7、D 位

臟位 是否被寫過 0沒有被寫過 1被寫過

8、關于PWT/PCD屬性

PWT:Page Write Through

PWT = 1 時 寫Cache的時候也要將數據寫入內存中。

PCD:Page Cache Disable

PCD = 1時,禁止某個頁寫入緩存,直接寫內存。比如,做頁表用的頁,已經存儲在TLB中了,可能不需要再緩存了。

3、頁目錄表基址

內容回顧
如果系統要保證某個線性地址是有效的,
那么必須為其填充正確的PDE與PTE,如果我們想填充PDE與PTE那么必須能夠訪問
PDT與PTT,那么存在2個問題:

1、一定已經有“人”為我們訪問PDT與PTT掛好了PDE與PTE,我們只有找到這個線性
地址就可以了。

2、這個為我們掛好PDE與PTE的“人”是誰?

注意:
CR3中存儲的是物理地址,不能在程序中直接讀取的。如果想讀取,也要把Cr3
的值掛到PDT和PTT中才能訪問,那么怎么通過線性地址訪問PDT和PTT呢?

1、拆分C0300000

結論:C0300000存儲的值就是PDT

如果我們要訪問第N個PDE,那么有如下公式:

0xC0300000 + N*4

4、頁表基址

1、

2、有了0xC0300000和0xC0000000能做什么?

掌握了這兩個地址,就掌握了一個進程所有的物理內存讀寫權限。

公式總結:

1、什么是PDI與PTI
10-10-12
2、訪問頁目錄表的公式:
0xC0300000 + PDI*4

3、訪問頁表的公式:
0xC0000000 + PDI*4096 + PTI*4

總結

以上是生活随笔為你收集整理的101012的全部內容,希望文章能夠幫你解決所遇到的問題。

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