首页
社区
课程
招聘
[求助]64位syscall指令做了哪些事?
发表于: 2016-11-16 21:47 5070

[求助]64位syscall指令做了哪些事?

2016-11-16 21:47
5070
研究了一下午发现似乎也就cs 和 ss 变了 就试着在VT Guest里改了这两个 然后跳出在内核地址里

__vmx_vmwrite(GUEST_CS_SELECTOR, 0x10);
__vmx_vmwrite(GUEST_SS_SELECTOR, 0);
结果直接卡死 卡在哪里也找不出
求大件指教一下

简单来说就是想在vt guest里模拟一下syscall指令直接切到内核 能否做到?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 2347
活跃值: (58)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不是说读的msr进入内核分发ssdt吗
2016-11-16 23:56
0
雪    币: 248
活跃值: (3789)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
syscall指令执行后,ss != 0
2016-11-17 01:00
0
雪    币: 41
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
在ring3最高只能读本进程7fffffffff的地址 在ring0级就能读fffff8000000的地址了 我是想知道cpu是怎么区分ring3ring0级的 查了很多资料都说是cs ss ds 之类的 都是32位的
2016-11-17 10:23
0
雪    币: 41
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我hook了从ring3进入内核的int3处理 它就是0 所以我才填0
2016-11-17 10:24
0
雪    币: 41
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我的目的是想从vmm里直接把线程从ring3切入内核 进入vmm当然就已经是内核级了 但正常退出会还原成ring3级
2016-11-17 10:26
0
雪    币: 248
活跃值: (3789)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
int3属于系统中断,而syscall专门用于系统调用,syscall进入内核后ss!=0
中断机制和系统调用机制涉及到的一些细节不一样
用int3替换syscall就当然行不通
2016-11-17 14:15
0
雪    币: 248
活跃值: (3789)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
syscall执行后,ss!=0
是syscall执行后,而不是syscall执行前
拦截syscall指令的时候,syscall并没有执行
syscall指令拦截后进入VMM也处于内核态,但并不是syscall切换后进入的内核态
2016-11-17 14:28
0
游客
登录 | 注册 方可回帖
返回