windows存储器管理机制(Windows-保护模式-X86-段寄存器结构分析)

Windows-保护模式-X86-段寄存器结构分析段寄存器结构分析一;段寄存器内部结构

段寄存器总共有96bit,可见部分16bit。

windows存储器管理机制(Windows-保护模式-X86-段寄存器结构分析)(1)

l Selector:16bit 可见部分,段选择子

l Attribute:16bit 不可见部分,表示段属性,表示了当前段寄存器是可读的还是可写的还是可执行的。

l Base:32bit 不可见部分,表示基址,段从那里开始

l Limit:32bit 不可见部分,表示基址的长度,base limit 可以确定一个段的大小。

二;段寄存器种类

ES,CS,SS,DS,FS,GS,LDTR,TR……

windows存储器管理机制(Windows-保护模式-X86-段寄存器结构分析)(2)

三;Selector

Selector段选择子,本质上就是有一个数字值,主要作用是通过它来构建段寄存器当中的不可见部分。该部分内容功能如下图:

windows存储器管理机制(Windows-保护模式-X86-段寄存器结构分析)(3)

l Index:在GDT数组或LDT数组当中的索引号(3~15bit)

l TI:当TI=0则表示不可见内容存放在GDT表当中。TI=1,则在LDT表当中。(2bit)

l RPL:请求特权级。以什么样的权限去访问段。(0~1bit)

四;GDTR寄存器与LDTR寄存器

参考连接:https://blog.csdn.net/jadeshu/article/details/72837230

五;GDT表与LDT表

GDT表与LDT表当中保存这段描述符(即段寄存器当中不可见部分)其中GDT表的基址存储在GDTR寄存器当中,LDT表的基址保存在GDT表当中。由段寄存器当中的TI位来决定段寄存器当中的Attribute,Base,limit三个部分存储在GDT表当中还是LDT表当中。

六;段描述符

段描述符存储在GDT表或者在LDT表当中,总共64bit。主要结构如下图:

windows存储器管理机制(Windows-保护模式-X86-段寄存器结构分析)(4)

我们通过windbg来查看一下。

---------------------------------------------------------------------------

注释:段描述符高4字节对应图中上半部分32bit,低4字节对应图中下半部分32bit。

6.1;P属性

P属性在段描述符,位于高4字节,下标为15的位置。详细图下图:

windows存储器管理机制(Windows-保护模式-X86-段寄存器结构分析)(5)

P属性作业:

P=1 段描述符有效,P=0 段描述符无效。

6.2;G属性

G属性位置如下图:

windows存储器管理机制(Windows-保护模式-X86-段寄存器结构分析)(6)

G作用:

G=0,Limit 的单位是字节,意味着Limit最大的界限是000FFFFFH。

G=1,Limit 的单位是4KB,意味着Limit最大的界限是FFFFFFFFH。

6.3;S属性

S属性位置如下图:

windows存储器管理机制(Windows-保护模式-X86-段寄存器结构分析)(7)

S属性作用:

S=1,段描述符表示代码段或者数据段描述符。

S=0,段描述符表示系统段描述符。

6.4;TYPE属性

TYPE属性如下图:

windows存储器管理机制(Windows-保护模式-X86-段寄存器结构分析)(8)

TYPE属性的不同含义是根据S属性来决定的。当S=1时和S=0时,TYPE属性的含义时不相同的。

6.4.1;代码/数据描述符

当S=1时,表示该描述符号为代码描述符或者数据描述符。TYPE属性当中11位为0则表示数据段,为0则表示数据段。详细如下图:

windows存储器管理机制(Windows-保护模式-X86-段寄存器结构分析)(9)

数据描述符当中(S=1,TYPE11位=1)

l W表示是否可写,W=0表示不可写,W=1表示可写。

l A表示是否访问过,A=0表示代码没有加载过,A=1表示代码被加载过。

windows存储器管理机制(Windows-保护模式-X86-段寄存器结构分析)(10)

l E向下扩展位,E=0,表示向上扩展,E=1,表示向下扩展。

windows存储器管理机制(Windows-保护模式-X86-段寄存器结构分析)(11)

当S=1时,表示该描述符号为代码描述符或者数据描述符。TYPE属性当中11位为0则表示数据段,为1则表示代码段

l A访问位,A=0,没有访问,A=1,访问过

l R可读位,R=0,不可读,R=1,可读

l C一致位,C=1 一致代码段,C=0非一致代码段

6.4.2;系统段描述符

当S=0时,表示该符号位位系统段描述符。在系统段描述符当中不同的TYPE属性表示含义如下图:

windows存储器管理机制(Windows-保护模式-X86-段寄存器结构分析)(12)

6.5;DPL属性

该属性只有两种值,00和11。具体内容以后分解

6.6;D/B属性

D/B位置如下图:

windows存储器管理机制(Windows-保护模式-X86-段寄存器结构分析)(13)

D/B属性作用:

l 对CS段影响

n D=1,采用32bit寻址方式

n D=0,采用32bit寻址方式

l 对SS段影响

n D=1,隐式堆栈访问指令,使用32bit堆栈指针寄存器ESP

n D=1,隐式堆栈访问指令,使用16bit堆栈指针寄存器SP

l 向下扩展的数据段影响

n D=1,段上线为4GB

n D=0,段上线为64KB

windows存储器管理机制(Windows-保护模式-X86-段寄存器结构分析)(14)

七;段描述符对比段寄存器当中不可见部分

Base部分对应位置如下图:

windows存储器管理机制(Windows-保护模式-X86-段寄存器结构分析)(15)

Limit部分:

windows存储器管理机制(Windows-保护模式-X86-段寄存器结构分析)(16)

Attribute部分:

windows存储器管理机制(Windows-保护模式-X86-段寄存器结构分析)(17)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页