首页
社区
课程
招聘
未解决 [求助]x64调用门如何调用
发表于: 2019-4-16 09:44 5597

未解决 [求助]x64调用门如何调用

2019-4-16 09:44
5597
最近在看x86_x64体系探索及编程这本书学习在x64下的保护模式(好像应该叫做长模式?),看到了调用门的时候想着做个实验看看,门描述符都构造好了,就是卡在怎么调用上了...
根据书上给的x64调用门结构和intel白皮书里面给出的结构知道,x64下面调用门没有太大改变,只是多了8个字节,多出来的八个字节的低4字节记录函数偏移,高4个字节全部写0。

这是我通过windbg构造的调用门描述符

这是根据调用门在gdt表中得出来的选择子:0x63
这是第一个问题,在windbg里面,用dg命令显示这个选择子,提示不识别

这是为啥??难道x64下面和x32下面算选择子index的方法不一样?

第二个问题就是我如何在代码里面调用这个调用门?书上给出的方式是 call qword ptr ds:[xxxxx],我寻思着这不和间接调用一样吗?这也不是call far呀。

抱着试试看的态度试了一下。。。果然和调用函数的效果是一样的。。。(这张图里面的选择子是我忘记改了,之前做过测试,0x63也是不行的)
在x64dbg里面也试了试,还是没有试出来。
期待大佬帮我解决一下这两个疑问。



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

最后于 2019-4-16 09:49 被Quack编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 914
活跃值: (2553)
能力值: ( LV5,RANK:68 )
在线值:
发帖
回帖
粉丝
2
syscall
2019-4-16 14:28
1
雪    币: 224
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
万剑归宗 syscall
可以麻烦说一下详细思路吗?
2019-4-16 16:48
0
雪    币: 224
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
万剑归宗 syscall
我是刚刚学习的小白,下午看了你的回复后去补习了一下syscall,您说的实现方法是否是把MSR里面记录的CS替换成调用门的选择子,然后使用syscall跳过去?
2019-4-16 17:23
0
雪    币: 224
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
万剑归宗 syscall
但是这样的话,后续的步骤怎么处理还是没有思路
2019-4-16 17:28
0
雪    币: 248
活跃值: (3789)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
call fword ptr [xxxx]
2019-4-27 20:59
0
雪    币: 51
活跃值: (143)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
yy虫子yy call fword ptr [xxxx]
这个是32位的
2020-2-18 09:30
0
雪    币: 1485
活跃值: (1135)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
切换内核时gs要处理
2020-4-3 11:54
0
雪    币: 1485
活跃值: (1135)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
X64调用门使用已经放出来了
2020-4-11 21:33
0
雪    币: 4
活跃值: (424)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
冰雄 切换内核时gs要处理
gs要怎么处理?进入之前保存?出之前恢复?我看你代码也没处理GS啊
2020-6-1 14:31
0
游客
登录 | 注册 方可回帖
返回
//