查看: 210|回复: 0

[原创图文] 段寄存器解析

[复制链接]

12

主题

29

帖子

1

精华

VIP

Rank: 16

学币
139
荣耀
0
rank
100
违规
0
发表于 2020-11-12 13:34:58 | 显示全部楼层 |阅读模式
段寄存器结构分析一;段寄存器内部结构       段寄存器总共有96bit,可见部分16bit。



段寄存器解析

段寄存器解析


段寄存器解析

段寄存器解析
l  Selector:16bit 可见部分,段选择子
l  Attribute:16bit 不可见部分,表示段属性,表示了当前段寄存器是可读的还是可写的还是可执行的。
l  Base:32bit 不可见部分,表示基址,段从那里开始
l  Limit:32bit 不可见部分,表示基址的长度,base + limit 可以确定一个段的大小。


二;段寄存器种类







四;GDTR寄存器与LDTR寄存器五;GDT表与LDT表
       GDT表与LDT表当中保存这段描述符(即段寄存器当中不可见部分)其中GDT表的基址存储在GDTR寄存器当中,LDT表的基址保存在GDT表当中。有段寄存器当中的TI位来决定段寄存器当中的Attribute,Base,limit三个部分存储在GDT表当中还是LDT表当中。
六;段描述符
       段描述符存储在GDT表或者在LDT表当中,总共64bit。主要结构如下图:

段寄存器解析

段寄存器解析
       我们通过windbg来查看一下。
       ---------------------------------------------------------------------------
注释:段描述符高4字节对应图中上半部分32bit,低4字节对应图中下半部分32bit。
6.1;P属性
       P属性在段描述符,位于高4字节,下标为15的位置。详细图下图:

段寄存器解析

段寄存器解析

       G作用:
       G=1,Limit 的单位是4KB,意味着Limit最大的界限是FFFFFFFFH。
6.3;S属性
       S属性位置如下图:

段寄存器解析

段寄存器解析
       S=1,段描述符表示代码段或者数据段描述符。
6.4;TYPE属性
       TYPE属性如下图:

段寄存器解析

段寄存器解析
       当S=1时,表示该描述符号为代码描述符或者数据描述符。TYPE属性当中11位为0则表示数据段,为0则表示数据段。详细如下图:
数据描述符当中(S=1,TYPE11位=1)
l  W表示是否可写,W=0表示不可写,W=1表示可写。
l  A表示是否访问过,A=0表示代码没有加载过,A=1表示代码被加载过。

段寄存器解析

段寄存器解析
l  E向下扩展位,E=0,表示向上扩展,E=1,表示向下扩展。

段寄存器解析

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

段寄存器解析

段寄存器解析
6.5;DPL属性
       该属性只有两种值,00和11。具体内容以后分解

       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

段寄存器解析

段寄存器解析

       Limit部分:

段寄存器解析

段寄存器解析


       Attribute部分:

段寄存器解析

段寄存器解析



温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的最好奖励,还可以获得学币奖励,请尊重作者的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
学逆向论坛-免费的逆向学习论坛
微信公众号
快速回复 返回顶部 返回列表