首页
社区
课程
招聘
KiServiceTable 在何处定义?
发表于: 2014-7-6 13:05 3711

KiServiceTable 在何处定义?

2014-7-6 13:05
3711
在wrk里头,  仅有一句 extern ULONG_PTR KiServiceTable[];
那么 KiServiceTable[]实际上是再哪里被定义的?

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 52
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
找到了
在 \base\ntos\ke\386\systable.asm :

TABLE_BEGIN4 macro t
      public _KiServiceTable
_KiServiceTable label dword
      endm

其余还有 TABLE_BEGIN 5.6.7.8 这4个宏 不过都是空的宏 不知道拿来干麻的

systable.asm里头 使用了 TABLE_BEGIN4.5.6.7.8这些宏之后 开始定义ssdt表的真实内容,部分代码如下:

.
.
.
.
        TABLE_BEGIN4 <"System Service Dispatch Table">
        TABLE_BEGIN5 <"System Service Dispatch Table">
        TABLE_BEGIN6 <"System Service Dispatch Table">
        TABLE_BEGIN7 <"System Service Dispatch Table">
        TABLE_BEGIN8 <"System Service Dispatch Table">
TABLE_ENTRY  AcceptConnectPort, 1, 6
TABLE_ENTRY  AccessCheck, 1, 8
TABLE_ENTRY  AccessCheckAndAuditAlarm, 1, 11
TABLE_ENTRY  AccessCheckByType, 1, 11
TABLE_ENTRY  AccessCheckByTypeAndAuditAlarm, 1, 16
.
.
.
.
由于5.6.7.8宏都是空的  _KiServiceTable label dword 就使 (&_KiServiceTable)再加上一个dword ==SSDT的起始地址

附上systable.asm给大家
systable.rar
上传的附件:
2014-7-6 14:47
0
雪    币: 52
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
但奇怪的是
既然 &_KiServiceTable 还要加4BYTE才是 SSDT的起始地址
所以在系统初始化时:
KeServiceDescriptorTable[0].Base = &KiServiceTable[0];

这句应该要是
KeServiceDescriptorTable[0].Base = &KiServiceTable[1];
吧?

我知道我一定是哪里搞错了 麻烦大家指正我!!
2014-7-6 14:50
0
游客
登录 | 注册 方可回帖
返回