首页
社区
课程
招聘
[求助]关于windows中GDT的问题
发表于: 2013-6-10 20:07 6943

[求助]关于windows中GDT的问题

2013-6-10 20:07
6943
程序中所有的地址都是逻辑地址,而逻辑地址->线性地址->物理地址。逻辑地址需要使用GDT(全局描述符表)转换成线性地址,在windows中的反汇编中使用的地址,比如ox00400000这个地址是逻辑地址还是线性地址,windows中是怎么使用GDT的,请高人解答?

[培训]科锐软件逆向54期预科班、正式班开始火爆招生报名啦!!!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 160
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
保护模式下所有地址都为逻辑地址,而物理地址是由CPU根据GDT自动计算后进行内存操作,个人见解。
2013-6-10 20:59
0
雪    币: 524
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
都为逻辑地址的这个我知道,就是不明白在一个程序中使用的地址都类似于ox12345678这样的,那GDT中的段地址是什么形式的呢?
2013-6-11 07:21
0
雪    币: 541
活跃值: (694)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
4
保护模式中的地址是逻辑地址,但是cs ds ss 等段选择子描述的段起始地址为0,所以,如果逻辑地址00401000,对应的线性地址也是00401000
cs ds等里面存的是段选择子,也是gdt的项的索引,从中取出段描述符,地址段,数据段,栈段的起始地址都是0
2013-6-11 08:49
0
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
打开多个calc,分别用调试器附加,它们的cs,ds,ss值都一样,难道都占用同一地址区域吗?
2013-6-11 09:32
0
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
好多概念都忘记了,还有pte,pde之类的,原来线性地址一样,却被映射到不同的物理地址,还有page换页,物理地址怎么计算出来的呢?比如0x00401000?
2013-6-11 09:42
0
雪    币: 541
活跃值: (694)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
7
嗯,在GDT中,用户程序的所有cs、ds、ss都使用同一个段选择子
2013-6-11 10:25
0
雪    币: 541
活跃值: (694)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
8
32位系统在非Pae时,一个32位线性地址会分割成3段 10-10-12(pde-pte-offset),三级表格式。

32位系统在Pae模式时,一个32位线性地址会分割成4段 2-9-9-12(?-pde-pte-offset),四级表格式。

线性地址--〉物理地址就是通过多级表格式转化的.
网上有图解
2013-6-11 10:30
0
雪    币: 524
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
在windows中所有的段都是0,那就相当于GDT没有利用起来
2013-6-12 08:18
0
游客
登录 | 注册 方可回帖
返回