(7)資料段許可權檢查

2021-10-09 18:34:58 字數 980 閱讀 2147

**段和系統段描述符的許可權檢查方式並不一樣,詳見後續課程,本文只**資料段。

dpl是段的許可權屬性,要想訪問乙個資料段,段選擇子和cpu當前許可權必須高於dpl。要注意,許可權數值越低,許可權越高,比如我們常說的0環,就是許可權最高的。

rpl:段選擇子的許可權

dpl:段的許可權

cpl:cpu許可權

綜上所述,資料段許可權檢查遵循以下規則:

cpl <= dpl 並且 rpl <= dpl (數值上的比較)

只有滿足上述條件,才能成功訪問資料段。

總結:

cpl cpu當前的許可權級別

dpl 如果你想訪問我,你應該具備什麼樣的許可權

rpl 用什麼許可權去訪問乙個段

<1> 在3環能載入的資料段有哪些?

3環cpl=3,只能載入dpl=3的資料段。

<2> 在0環能載入的資料段有哪些?

0環cpl=0,滿足rpl<=dpl的資料段都可以載入。

<3> 詳細描述這下面**的執行過程:

mov ax,0x23

mov ds,ax

段選擇子是0x0023,rpl=11b=3,屬於最低許可權,只能訪問dpl=3的資料段。而cpl則無影響,不管是0環還是3環,都滿足cpl<=rpl,只要rpl滿足,cpl也一定滿足。

當執行 mov ds,ax 時,cpu先解析段選擇子0023,然後去gdt表找段描述符,檢查段描述符p位是否有效,然後檢查s位,確認是資料段或**段,然後檢查type域確認是資料段,然後看dpl是否等於3.只要上述條件都滿足,則mov指令執行成功,只要有一條不滿足,mov失敗。

07 段許可權檢查

當我們要修改乙個段暫存器的時候,cpu會檢查當前程式有沒有許可權將段描述符載入到段暫存器中。cpu的分級 我們知道段選擇子分為三部分,其中0 1位為rpl,當段暫存器為cs的時候此時的rpl我們成為cpl,也就是我們當前程式的特權等級,我們下面用od隨便開啟乙個程式來看看它的特權等級 上圖段選擇子的...

Windows核心 (4) 資料段許可權檢查

cpl cpl是當前執行的程式或任務的特權級。它被儲存在cs和ss的第0位和第1位上。通常情況下,cpl代表 所在的段的特權級。當程式轉移到不同特權級的 段時,處理器將改變cpl。只有0和3兩個值,分別表示使用者態和核心態。dpl 如果你想訪問我,你應該具備什麼樣的許可權 rpl 用什麼許可權去訪問...

段描述符屬性DB位,段許可權檢查

描述符屬性 db位 情況一 對cs段的影響 d 1 採用32位定址方式 d 0 採用16位定址方式 字首67 改變定址方式 情況二 對ss段的影響 d 1 隱式堆疊訪問指令 如 push pop call 使用32位堆疊指標暫存器esp d 0 隱式堆疊訪問指令 如 push pop call 使用...