首页
社区
课程
招聘
Windows内核-系统调用(三)
发表于: 2022-8-10 22:21 6582

Windows内核-系统调用(三)

2022-8-10 22:21
6582

OpenProcess和ReadProcessMemory从3环进0环的过程

kernel32.OpenProcess

KernelBase.OpenProcess

Ntdll.NtOpenProcess

7FFE0300(获取KiFastCallEntry)

sysenter

ZwOpenProcess

所有进程在R3和R0共享同一个结构_KUSER_SHARED_DATA

R3地址为:7FFE0000

R0地址为:FFFE0000

KiFastSystemCall


API实现OpenProcess功能

main.cpp

1.在 Ring3 的代码调用了 sysenter 指令之后,CPU 会做出如下的操作:

2.查看msr寄存器

3._KTRAP_FRAME

dt _KTRAP_FRAME:内核的上下文

dt _KPCR 每个cpu逻辑核的状态

5.KUSER_SHARED_DATA

6.KUSER_SHARED_DATA FFDF0000

304位置是 SystemCallReturn

7.ntdll.dll --> ZwOpenProcess

8.ntdll.dll --> KiFastSystemCall

9.ntoskrnl.exe -->kiFastCallEntry

10.SSDT表

KeServiceDescriptorTable

ServiceTable:指向函数地址表,KeServiceDescriptorTable+服务号*4 = 函数地址

Count:系统服务表被调用的次数

ServiceLimit:函数数量

ArgmentTable:函数参数表,每个参数4个字节.获取字节数后除以4,得到函数参数个数


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

最后于 2022-9-9 11:10 被zhang_derek编辑 ,原因:
收藏
免费 7
支持
分享
最新回复 (1)
雪    币: 229
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
感谢分享!
2022-8-17 00:09
0
游客
登录 | 注册 方可回帖
返回
//