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 l403.結果顯示不能讀寫因為在base+limit裡面,但是如果超出綠色範圍則能讀寫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
//讀寫測試,測試在向下拓展中 fs.base+limit是否能讀寫** 棧操作由作業系統自動ss去描述#include "
stdafx.h
"#include
int value = 0
;int
main()
; printf(
"%x\n
", value);
return0;
}
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 使用...