首页
社区
课程
招聘
[已解决] [求助]学习系统调用时遇到了一个问题,关于在KiSystemCall64中设置断点 50.00雪花
发表于: 2020-12-27 18:17 3382

[已解决] [求助]学习系统调用时遇到了一个问题,关于在KiSystemCall64中设置断点 50.00雪花

2020-12-27 18:17
3382

根据文档,syscall指令会从msr的lstar((0xC0000082)中读取地址作为rip,从windbg中我读取出来的地址是KiSystemCall64(Windows10 build 19042 我看到有些文章说是KiSystemCall64Shadow,应该是版本问题),因此我想在这里下断点一步步跟入,但是发现无法在这里下断,我想知道这是什么原因?是因为pg吗?
我搜了一些其他分析的文章也没有在这里下断点的,都是静态分析找到对应的内核函数后下断点

 

这是我操作的内容,在KiSystemCall64下断点之后t一下就直接到ret了
0: kd>
ntdll!NtQueueApcThread+0x10:
0033:00007ffb3c32c640 7503 jne ntdll!NtQueueApcThread+0x15 (00007ffb3c32c645)
0: kd>
ntdll!NtQueueApcThread+0x12:
0033:00007ffb3c32c642 0f05 syscall 0: kd> rdmsr c0000082 msr[c0000082] = fffff8023681e6c0
0: kd> u fffff8023681e6c0 nt!KiSystemCall64: fffff8023681e6c0 0f01f8 swapgs
fffff8023681e6c3 654889242510000000 mov qword ptr gs:[10h],rsp fffff8023681e6cc 65488b2425a8010000 mov rsp,qword ptr gs:[1A8h]
fffff8023681e6d5 6a2b push 2Bh fffff8023681e6d7 65ff342510000000 push qword ptr gs:[10h]
fffff8023681e6df 4153 push r11 fffff8023681e6e1 6a33 push 33h
fffff8023681e6e3 51 push rcx 0: kd> bp ffff8023681e6c0
0: kd> t
ntdll!NtQueueApcThread+0x14:
0033:00007ffb`3c32c644 c3 ret


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

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 246
活跃值: (4427)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
2
ba e1 KiSystemCall64+3
2020-12-27 20:05
0
雪    币: 1469
活跃值: (440)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
跟PG应该没啥关系,挂着windbg启动时PG自动被禁用
2020-12-27 20:32
0
雪    币: 0
活跃值: (300)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
ookkaa ba e1 KiSystemCall64+3

测试了两个虚拟机,一个没有反应一个会爆蓝屏,都是win10

最后于 2020-12-27 20:35 被mb_ttxlfvwe编辑 ,原因:
2020-12-27 20:34
0
雪    币: 246
活跃值: (4427)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
5
nt!KiSystemCall64ShadowCommon:
fffff802`04fcb16d 6a2b            push    2Bh
kd> p
nt!KiSystemCall64ShadowCommon+0x2:
fffff802`04fcb16f 65ff342510700000 push    qword ptr gs:[7010h]
kd> t
nt!KiSystemCall64ShadowCommon+0xa:
fffff802`04fcb177 4153            push    r11
kd> t
nt!KiSystemCall64ShadowCommon+0xc:
fffff802`04fcb179 6a33            push    33h
kd> t
nt!KiSystemCall64ShadowCommon+0xe:
fffff802`04fcb17b 51              push    rcx
2020-12-27 20:52
0
雪    币: 246
活跃值: (4427)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
6
win10开了页表隔离要在在nt!KiSystemCall64ShadowCommon头部下断点,不然会死循环和双重错误
2020-12-27 20:54
0
雪    币: 0
活跃值: (300)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
ookkaa ba e1 KiSystemCall64+3
我这边没有这个函数,应该是没开页表隔离。
又仔细研究了一下发现KiSystemCall64前三条指令是在设置内核栈,只要断点下在这三条指令之后就可以了,也就是ba e1 KiSystemCall64+15
这因为内核的调试机制需要吗,还是因为别的
2020-12-27 21:55
0
雪    币: 246
活跃值: (4427)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
8
mb_ttxlfvwe 我这边没有这个函数,应该是没开页表隔离。 又仔细研究了一下发现KiSystemCall64前三条指令是在设置内核栈,只要断点下在这三条指令之后就可以了,也就是ba e1 KiSystemCall64 ...
刚进来的时候是三环的环境,要切换成内核栈什么的,所以打在后面的指令
2020-12-27 22:18
0
游客
登录 | 注册 方可回帖
返回
//