6 保護模式 段描述符屬性 S位 TYPE域

2022-08-23 20:03:06 字數 3133 閱讀 6639

s = 1 **段或者資料段描述符

s = 0 系統段描述符

注意:dpl在windows內只會出現兩種情況,全是0或者1 

**段那麼p為已經確定為1

s也為1 

那麼dpl 為0 則是9

為1 則是f

type域小於8則為資料段

大於8則是**段

資料段說明:

8a 代表是否被載入如果訪問過則為1 反之則為0

9w 代表是否可寫,如果為0則代表不可寫,反之亦然

10e 拓展位, 為0 向上拓展,為1向下拓展

第一步:先構造乙個向下拓展的段描述符

00cf9700`0000ffff
第二步:段描述符載入到段暫存器裡

0: kd>dq gdtr l40

80b95000

00000000`00000000

00cf9b00`0000ffff

80b95010 00cf9300`0000ffff 00cffb00`0000ffff

80b95020 00cff300`0000ffff 80008b1e`600020ab

80b95030

84409333

`dc003748 0040f300`00000fff

80b95040 0000f200`0400ffff

00000000`12345678

80b95050

84008933`b0000068 84008933

`b0680068

80b95060

00000000`00000000

00000000`00000000

80b95070 800092b9`500003ff

00000000`00000000

80b95080

00000000`00000000

00000000`00000000

80b95090

00000000`00000000

00000000`00000000

0: kd> eq 80b95090 00cf9700`0000ffff //

構造向下拓展

0: kd>dq gdtr l40

80b95000

00000000`00000000

00cf9b00`0000ffff

80b95010 00cf9300`0000ffff 00cffb00`0000ffff

80b95020 00cff300`0000ffff 80008b1e`600020ab

80b95030

84409333

`dc003748 0040f300`00000fff

80b95040 0000f200`0400ffff

00000000`12345678

80b95050

84008933`b0000068 84008933

`b0680068

80b95060

00000000`00000000

00000000`00000000

80b95070 800092b9`500003ff

00000000`00000000

80b95080

00000000`00000000

00000000`00000000

80b95090 00cf9700`0000ffff

00000000`00000000

3.結果顯示不能讀寫因為在base+limit裡面,但是如果超出綠色範圍則能讀寫

//讀寫測試,測試在向下拓展中 fs.base+limit是否能讀寫

#include "

stdafx.h

"#include

int value = 0

;int

main()

; printf(

"%x\n

", value);

return0;

}

** 棧操作由作業系統自動ss去描述

fffff880`0470b4c0 00000000`00000000 00000000`00000000

fffff880`0470b4d0 00209b00`00000000 00cf9300`0000ffff

fffff880`0470b4e0 00cffb00`0000ffff 00cff300`0000ffff

fffff880`0470b4f0 0020fb00`00000000 00000000`00000000

fffff880`0470b500 04008b70`4ec00067 00000000`fffff880

fffff880`0470b510 ff40f3fd`f0007c00 00000000`00000000

fffff880`0470b520 00cf9a00`0000ffff 00000000`00000000

fffff880`0470b530 00000000`00000000 00000000`00000000

只有第5位為9或者和f的才可能是**段和資料段

**段說明:

a 訪問位

r 可讀位

c 一致位

c= 1 一致**段          3環可以調0環

c= 0 非一致**段  各自呼叫

當s = 0 時,改段描述符為系統描述符

7 保護模式 段描述符DB位

b 0 64k 65535位元組 b 1 4g 指定的虛擬4gb空間 如果需要去16位的加個字首67 1.db位位於第22位 對以下三種情況都有影響 只要是 段都為b,只要是資料段都為d 情況一 對cs段的影響 d 1 採用32位定址方式 d 0 採用16位定址方式 字首67 改變定址方式 情況二 ...

保護模式(一) 段描述符與段選擇子

結構 p位p 1 段描述符有效 p 0 段描述符無效 g位 g 0 段暫存器limit單位為位元組,limit最大值0x000fffff g 1 段暫存器limit單位為4kb,limit最大值0xffffffff s位 s 1 段或資料段描述符 s 0 系統段描述符 type 如果s位為1 資料段...

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

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