首页
社区
课程
招聘
SSDT函数名和服务号的关系 懂得来看下 谢谢
发表于: 2010-12-4 20:25 5246

SSDT函数名和服务号的关系 懂得来看下 谢谢

2010-12-4 20:25
5246
#define GetSystemFunc(FuncName) KeServiceDescriptorTable.ServiceTableBase[*(PULONG)((PUCHAR)FuncName+1)]

中括号里面是内核api的服务号或者一个索引号

我有点疑惑,通过上面的宏可以先获得索引号,进而获得这个函数在SSDT表中的地址

我们假设这个地址为SSDT_FUN_ADDRESS

实际上一个函数的名字,也可以表达这个函数的地址 我们假设FUN_ADDRESS

那么这两者时间有什么关系呢,如果要hook函数,直接用FUN_ADDRESS不是更快捷,因为他的地址就是他的名字

但是实际上我打印了下,他们的结果是不同的

请问他们的联系?

   DbgPrint("fun:%x\n",(ULONG)ZwTerminateProcess);
    DbgPrint("ssdtfun:%x",GetSystemFunc(ZwTerminateProcess));

[招生]系统0day安全班,企业级设备固件漏洞挖掘,Linux平台漏洞挖掘!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 596
活跃值: (449)
能力值: ( LV12,RANK:320 )
在线值:
发帖
回帖
粉丝
2
ZwTerminateProcess---->NtTerminateProcess
2010-12-4 20:34
0
雪    币: 2
活跃值: (209)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢 好像是了解了

ZwTerminateProcess的名字是这个函数的地址

而通过索引号得到的,应该是实际起作用的 NtTerminateProcess

所以他们的地址是不同的,不知道理解对您的意思没
2010-12-4 20:40
0
雪    币: 596
活跃值: (449)
能力值: ( LV12,RANK:320 )
在线值:
发帖
回帖
粉丝
4
是这样的
2010-12-4 20:57
0
雪    币: 397
活跃值: (722)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
5
楼主是我的小号,哈哈
2010-12-5 01:54
0
游客
登录 | 注册 方可回帖
返回
// // 统计代码