您的位置:首页 > 其它

#define SYSTEMSERVICE(_func) KeServiceDescriptorTable.ServiceTableBase[ *(PULONG)((PUCHAR)_func+1) 这

2013-08-17 14:15 330 查看
这个跟KeServiceDescriptorTable的结构有关
下面是KeServiceDescriptorTable的结构定义
KeServiceDescriptorTabletypedef struct _KSERVICE_TABLE_DESCRIPTOR {
 PULONG_PTR Base;
 PULONG Count;
 ULONG Limit;
 PUCHAR Number;
} KSERVICE_TABLE_DESCRIPTOR, *PKSERVICE_TABLE_DESCRIPTOR;
KeServiceDescriptorTable.ServiceTableBase就是其中的第一项Base,这里是定义的名字不一样没关系。
而Base指向的SSDT函数地址表,所以下面的语句就是一个宏用来取得函数地址表中对应序号的函数
KeServiceDescriptorTable.ServiceTableBase[ *(PULONG)((PUCHAR)_func+1)

*(PULONG)((PUCHAR)_func+1这里要解释下,这个语句是取函数它对应的SSDT上的序号,这个语句之所以能去到,跟ZW 系列SSDT函数有关,ZW系列函数的第二个字节就是序号,所以用上面语句取出序号,然后用这个序号取出函数地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: