首页
社区
课程
招聘
KeServiceDescriptorTable中找不到地址
发表于: 2011-5-12 20:16 4038

KeServiceDescriptorTable中找不到地址

2011-5-12 20:16
4038
各位大牛们,谁有空来帮帮我呗,先谢谢了,问题如下:
我想Hook 函数ZwOpenProcess,打算用sstd方式,看雪论坛上例子里也有。
我现在就有些疑问,KeServiceDescriptorTable结构如下:
typedef struct ServiceDescriptorEntry {
        unsigned int *ServiceTableBase;
        unsigned int *ServiceCounterTableBase; //Used only in checked build
        unsigned int NumberOfServices;
        unsigned char *ParamTableBase;
} ServiceDescriptorTableEntry_t, *PServiceDescriptorTableEntry_t;
__declspec(dllimport)  ServiceDescriptorTableEntry_t KeServiceDescriptorTable;
按照我的理解,NumberOfServices的数值代表函数的个数,ServiceTableBase中是这些函数的地址。
我通过windbg查看ZwOpenProcess的地址是804de044,但是我遍历ServiceTableBase中的所有数据也没有发现有地址804de044,这是为什么呢?还是我的理解有偏差?

方式如下:

ULONG zwop = (ULONG)ZwOpenProcess, temp;
  for(i = 0; i < KeServiceDescriptorTable.NumberOfServices; i++)
  {
    temp = (ULONG)((PULONG)KeServiceDescriptorTable.ServiceTableBase + i);
    KdPrint(("%0x", temp));
    if(temp == zwop)
      KdPrint(("has found the result !"));
  }

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

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 34
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
问题解决了,进来个兄弟帮我结贴啊,谢谢
2011-5-13 10:21
0
雪    币: 1149
活跃值: (888)
能力值: ( LV13,RANK:260 )
在线值:
发帖
回帖
粉丝
3
e来了..................
2011-5-13 10:29
0
游客
登录 | 注册 方可回帖
返回
//