抗艾龚伦强讲windows系统调用

3.1.系统调用

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

kernel32.OpenProcess KernelBase.OpenProcess Ntdll.NtOpenProcess 7FFE0300(获取KiFastCallEntry) sysenter

ZwOpenProcess

edx,esp

KiFastSystemCall

main.cpp

kd> dt _KPCR

dt _KPCR 每个cpu逻辑核的状态

5.KUSER_SHARED_DATA

6.KUSER_SHARED_DATA FFDF0000

304位置是 SystemCallReturn

7.ntdll.dll --> ZwOpenProcess

ServiceTable:指向函数地址表,KeServiceDescriptorTable+服务号*4 = 函数地址 Count:系统服务表被调用的次数

ServiceLimit:函数数量

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

kd> .thread

kd> dd 0x83fbcb00 83fbcb00 83ed052c 00000000 00000191 83ed0b74 83fbcb10 00000000 00000000 00000000 00000000

3.3.系统调用返回R3

在Ring0 代码执行完毕,调用SYSEXIT 指令退回Ring3 时,CPU 会做出如下操作

3.4.SSDThook

tools.h

tools.c

}

KdPrint(("找到函数%s addr %p\r\n", funcName, funcAddr));

}

{

#include #include "tools.h"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值