02段探测
02--段探测
CS 代码段寄存器 描述的代码
SS 栈段 描述栈,比如局部变量
DS 数据段 堆地址,全局变量
ES 扩展段 串copy movsb so edi esi
FS 上下文环境段 R3代表我们TEB R0代表是KPCR
windbg
r RGDT
d 查看内存 db/dw/dd/dq dds/dqs
e 写内存
IA-32卷3 3.4.1段选择符
BASE
确定该段的第0字节在4GB线性地址空间中的位置。处理器将则3个基地址域组合在一起构成了一个32位地址值。段基址应当是16字节边界对齐的。16字节边界对齐不是必须的,但这种段边界的对齐能够使程序的性能最大化。
LIMIT
指明段或者门的类型,确定段的范围权限和增长方向。如何解释这个域,取决于该描述符是应用描述符(代码或数据)还是系统描述符,这由描述符类型标志(S 标记)所确定。代码段,数据段和系统段对类型域有不同的意义。
TYPE
当s标志位1时,小于等于7为数据段,大于7为代码段 。
S 标志
确定段描述符是系统描述符(S 标记为0)。 代码,数据段描述符(S标记为1)。
DPL 描述符特权级
指明该段的特权级。0为最高级
P(段存在)标志
为1代表段有效, 0无效
AVL
DEF
D/B
数据段为d, 代码段为b。
0代表16进制段, 1代表32位段
G (粒度)标志
代表单位是页, 0代表单位是字节
1页是4096字节, 16进制0x1000
换算一下限长:(0xfffff + 1) * 0x1000 = 0x100000000 - 1 = 0xffffffff
加1:是因为0也代表有一页。 减1:数组从0下标开始
0000 0000 0001 1 0 11 RPL请求权限
0 0000 0000 0011 //索引号 0003
0:GDT global decsrctor table 全局描述表
1: LDT local decsrctor table
r gdtr
80b99000
00cffb00`0000ffff
起始地址 限长 32位,4g
limit: fffff //20位
base: 00000000
type: b
s: 1 //(S 标记为0)或者代码,数据段描述符(S标记为1)。
dpl: 3
p: 1
avl: 0
def: 0
d/b: 1
g: 1 //代表单位是页, 0代表单位是字节
1页是4096字节, 16进制0x1000
换算一下限长:(0xfffff + 1) * 0x1000 = 0x100000000 - 1 = 0xffffffff
加1:是因为0也代表有一页。 减1:数组从0下标开始
00cff300`0001ffff
limit: fffff
base: 00000001
有访问权限干扰,有基址, 有长度

红白镇楼
浙公网安备 33010602011771号