首页
社区
课程
招聘
保护模式中GDT的物理地址怎么确定?
发表于: 2015-5-11 22:05 4516

保护模式中GDT的物理地址怎么确定?

2015-5-11 22:05
4516
刚接触保护模式,老弄不清楚怎么确定GDT的物理地址。GDT的物理地址是不是在GDTR中?怎么书上说这只是线性地址,还需通过分页机制转换?如果是线性地址,岂不是也要通过CR3指定的页目录表和页表来确定,但CR3不是每个任务都不一样吗,因为书上说每个任务都有自己的页目录表和页表,这样推理岂不是GTD应该有多个?这又不对啊。
求指教,真不懂。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 1
支持
分享
最新回复 (7)
雪    币: 102
活跃值: (31)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
GDT的短地址是在GDTR指定的GDT表里.
(我猜是不经过MMU转换的物理地址, 没什么根据)
但是一般现在用的都是flat模式吧? 段的起始值都是0才对.

另外即使进程间使用不同的列表, 也可以将同样的地址映射到同样的地方.
比如Linux的内核就映射在0xc0000000上.
2015-5-11 22:32
0
雪    币: 201
活跃值: (62)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
[QUOTE=谷月轩;1370262]GDT的短地址是在GDTR指定的GDT表里

?????
自己指向自己????
2015-5-11 22:55
0
雪    币: 102
活跃值: (31)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
不是自己指向自己的.
gdtr寄存器不是指向GDT表吗?
表中有gdt项啊.
2015-5-12 01:26
0
雪    币: 201
活跃值: (62)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不懂,gdtr指向GDT,GDT中有GDT描述符?晕!!
我只知道GDT中有LDT描述符。

现在的问题是GDTR中是物理地址还是线性地址,如是线性地址是怎样定位GDT的。
2015-5-12 09:58
0
雪    币: 172
活跃值: (1623)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
6
肯定是线性地址啊,假设gdt的线性地址是0xaabbccdd 每个进程的cr3通过分页机制映射0xaabbccdd到同一个物理地址不就行了吗
2015-5-12 10:43
0
雪    币: 102
活跃值: (31)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
楼下也已经说了.
不同的页表可以映射一部分地址到相同的地方.

比如: 程序运行在 0x00000000, 系统内存统一映射到0xc0000000
而GDT表的地址就在系统内存里.
2015-5-12 12:52
0
雪    币: 50
活跃值: (128)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
有一本新出的书叫windows内核设计思想上面有
2015-5-12 13:30
0
游客
登录 | 注册 方可回帖
返回
//