首页
社区
课程
招聘
[原创]Windows-保护模式-X86-段寄存器结构分析
发表于: 2021-6-1 16:16 7413

[原创]Windows-保护模式-X86-段寄存器结构分析

2021-6-1 16:16
7413

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


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

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

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

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


 

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

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

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

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

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

 


 

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

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

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

       我们通过windbg来查看一下。

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

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

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


 

       P属性作业:

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

       G属性位置如下图:

       G作用:

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

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

       S属性位置如下图:

       S属性作用:

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

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


 

       TYPE属性如下图:


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2021-6-1 16:24 被天象独行编辑 ,原因:
收藏
免费 2
支持
分享
最新回复 (2)
雪    币: 1140
活跃值: (266)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
又是滴水来的?
2021-6-1 17:11
0
雪    币: 2089
活跃值: (3933)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
有点老的干货,简称老白干
2021-6-1 18:56
0
游客
登录 | 注册 方可回帖
返回
//