html5 手机网站,外贸网店怎么开店,做羞羞网站,公司如何登录网站做就业登记P位
p 1时段描述符有效#xff0c;p 0时段描述符无效
Base
Base被分成了三个部分#xff0c;按照实际拼接即可
G位
如果G 0 说明描述符中Limit的单位是字节#xff0c;如果是G 1 #xff0c;那么limit的描述的单位是页也就是4kb
S位
S 1 表示代码段或者数据段描…
P位
p 1时段描述符有效p 0时段描述符无效
Base
Base被分成了三个部分按照实际拼接即可
G位
如果G 0 说明描述符中Limit的单位是字节如果是G 1 那么limit的描述的单位是页也就是4kb
S位
S 1 表示代码段或者数据段描述符s 0表示系统描述符
Type域
S位会决定是下面哪种表格当s 1 时说明此时是数据段
其中这张表里面Read可读Write可写Execute可执行accessed被访问过expand-down表示向下扩展conformimg表示一致位这几个里面一致位如果是1那么就说明这个段所指的内存是纯段没有页的但是现在的操作系统基本上都有分页故不再赘述
重点可以说下向下拓展 左边是正常的向上拓展即base到Limit这一段距离的内存有效右边是base到Limit这一段距离无效也就是向下拓展总的来说向下拓展就是段所指的这部分内存无效
下面是验证
打开Windbg可以看见此时ds对应的描述符为00cff3000000ffff0x23也就是index为4
1: kd r gdtr
gdtr807d4c20
1: kd dq 807d4c20
ReadVirtual: 807d4c20 not properly sign extended
807d4c20 0000000000000000 00cf9b000000ffff
807d4c30 00cf93000000ffff 00cffb000000ffff
807d4c40 00cff3000000ffff 80008b7cf75020ab
807d4c50 8040937cc0003748 0040f30000004000
807d4c60 0000f2000400ffff 0000000000000000
807d4c70 8000897d1ac00068 8000897d1b300068
807d4c80 0000000000000000 0000000000000000
807d4c90 800092b9900003ff 0000000000000000还是老样子把这个描述符移到段选择子对应4bindex号为9的位置同时将Type域的值置为6也就是多加上一个expand-down
1: kd eq 807d4c68 00cff6000000ffff
WriteVirtual: 807d4c68 not properly sign extended
1: kd dq 807d4c20
ReadVirtual: 807d4c20 not properly sign extended
807d4c20 0000000000000000 00cf9b000000ffff
807d4c30 00cf93000000ffff 00cffb000000ffff
807d4c40 00cff3000000ffff 80008b7cf75020ab
807d4c50 8040937cc0003748 0040f30000004000
807d4c60 0000f2000400ffff 00cff6000000ffff//被修改的在这里
807d4c70 8000897d1ac00068 8000897d1b300068
807d4c80 0000000000000000 0000000000000000
807d4c90 800092b9900003ff 0000000000000000我们随便找个程序通过汇编来改动ds的值下图里面已经修改了ds的值 再运行一步就跳到了Win的错误KiUserExceptionDispatcher这就是报错了 DB位
DB位对不同段的影响不同
对CS段的影响
D 1 采用32位的寻址方式D 0 采用16位的寻址方式
对SS段的影响
D 1 时隐式堆栈访问指令PUSH POPCALL使用32位堆栈指针寄存器ESPD 0时使用SP
这里两个影响也可以通过修改描述符但是道理和Type域那里是一样的就没有必要多来几次了
DPL
描述符特权级别规定了访问该段所需要的特权级别
AVL
AVL指示是否可以供系统软件使用