首页
社区
课程
招聘
[讨论]学习SSDT,第二个表项的值的问题--SYSTEM_SERVICE_TABLE win32k; //win32k.sys的服务函数[解决]
发表于: 2011-10-25 16:24 4981

[讨论]学习SSDT,第二个表项的值的问题--SYSTEM_SERVICE_TABLE win32k; //win32k.sys的服务函数[解决]

2011-10-25 16:24
4981
先什么都不说,下面是从百度贴过来的系统描述符表的定义,也就是说有4个表项.现在大家用的很多也,讨论的很多的第一个表项基本没有问题了.能够看到其值是多少.但是
第二个表项的什为什么会一直是0呢?[第三,四个表项是没有用到了,是零肯定没能问题]

typedef struct _SERVICE_DESCRIPTOR_TABLE
  {
  SYSTEM_SERVICE_TABLE ntoskrnel; //ntoskrnl.exe的服务函数
  [COLOR="red"]SYSTEM_SERVICE_TABLE win32k; //win32k.sys的服务函数,(gdi.dll/user.dll的内核支持)[/COLOR]
  SYSTEM_SERVICE_TABLE NotUsed1;
  SYSTEM_SERVICE_TABLE NotUsed2;
  }SYSTEM_DESCRIPTOR_TABLE,*PSYSTEM_DESCRIPTOR_TABLE;

现在看一下windbg的输出:
kd> dd keservicedescriptortable
80553180  80502030 00000000 0000011c 805024a4
[COLOR="Red"][B]80553190  00000000 00000000 00000000 00000000[/B][/COLOR]
805531a0  00000000 00000000 00000000 00000000
805531b0  00000000 00000000 00000000 00000000
805531c0  00002710 bf80da45 00000000 00000000
805531d0  f7aeaa80 f72589e0 861a17c0 806e0f40
805531e0  00000000 00000000 3190a304 00000000
805531f0  f6259544 01cc92ea 00000000 00000000

可以看到第二个表项是一直是零是为什么呢?.
还有一个keservicedescriptortableShadow与它又是什么关系?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 25
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
keservicedescriptortable   keservicedescriptortableShadow的类型是SYSTEM_SERVICE_TABLE不是SERVICE_DESCRIPTOR_TABLE
2011-10-25 17:05
0
雪    币: 122
活跃值: (46)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
谢谢你的回答.问题解决了,其实两个都是SERVICE_DESCRIPTOR_TABLE,只是非shadow项只填入了第一个表项,而另外的一个表里把所有用到的表项都填写了,不过没有导出.你可以用windbg看
KeServiceDescriptorTable-0x40地址处的东西,就是那个shadow表.用到的两项表项都 有的,只是 没有导出,不能用符号访问.
2011-10-25 17:10
0
游客
登录 | 注册 方可回帖
返回
//