首页
社区
课程
招聘
[求助]关于64位下的gs、fs、GDT的相关问题
发表于: 2018-8-21 09:08 5180

[求助]关于64位下的gs、fs、GDT的相关问题

2018-8-21 09:08
5180

关于64位下的gs、fs、GDT的相关问题

写了以下一段代码,查看ring3下gs与fs的基地址

在windows server 2012 r2环境下运行程序,windbg调试查看结果如下:


我想问的问题是

1.为什么查看GDT表中的gs基地址为0,但用程序 _readgsbase_u64()查看为0x35fce000,到底哪个是gs的基地址

2.为什么_writefsbase_u64改变了程序输出的fs的基地址0x35fd0000变为0x1111,但实际上GDT表fs的基地址却从0x35fd0000变为0x35fce000

3._readgsbase_u64()对应的汇编指令是rdgsbase edx,查相关资料是“在任何特权等级下读取GS的基址”这个基址不是GDT表中的gs段选择子对应的表项的基址么?

希望有朋友能不吝赐教


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 1552
活跃值: (175)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
2

最后于 2018-8-22 08:34 被Sebastianasd编辑 ,原因:
2018-8-21 16:07
0
雪    币: 12848
活跃值: (9142)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
3
1、_readgsbase_u64  是在应用层读的吧?应用层和内核的gs是不一样的,IA32_KERNEL_GSBASE了解一下?你用windbg看到的是内核的gs
2、你确定fsbase可以设成0x1111这么奇怪的值?
3、是
2018-8-22 09:05
0
游客
登录 | 注册 方可回帖
返回
//