首页
社区
课程
招聘
[求助]WinDbg查看KeServiceDescriptorTableShadow,里面数据无效
发表于: 2009-8-10 21:31 11727

[求助]WinDbg查看KeServiceDescriptorTableShadow,里面数据无效

2009-8-10 21:31
11727
我在虚拟机中查看用命令u KeServiceDescriptorTableShadow,第0x16处偏移就是服务表基址对吧
1: kd> dd 8055c6a0
8055c6a0  80504a70 00000000 0000011c 80504ee4
8055c6b0  bf999400 00000000 0000029b bf99a110
8055c6c0  00000000 00000000 00000000 00000000
8055c6d0  00000000 00000000 00000000 00000000
也就是说bf999400处是存放服务的数组基址,可是我用dd bf999400命令时出来的都是问号:
1: kd> dd bf999400
bf999400  ???????? ???????? ???????? ????????
bf999410  ???????? ???????? ???????? ????????
bf999420  ???????? ???????? ???????? ????????
bf999430  ???????? ???????? ???????? ????????
      请问这是为什么?我在虚拟机启动后曾特意执行过GUI程序,不过这些都是关闭后查询的

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

收藏
免费 0
支持
分享
最新回复 (22)
雪    币: 522
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
SSDTSHADOW 的地址 只GUI线程可以访问  
用个R3的GUI线程IO就可以了  

WINDBG 不行
2009-8-10 21:43
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我也遇到这样的问题了,是不是要用R3下的程序来加载程序?
2009-8-10 23:06
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
4
WINDBG不行? 不懂别乱说.''

(bp xxx, 切换到explorer.exe中,u xx即可.)

..

中间真没有隐藏内容
2009-8-11 00:06
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谁这么就告诉下吧,我也是出现这样的情况
00000010        0:42:17        the KeServiceDescriptorTable:80505428       

00000012        0:42:17        the KeServiceDescriptorTableShadow:bf947bf5       
00000013        0:42:17        the NumberOfKeServiceDescriptorTableShadow:29b
2009-8-11 00:44
0
雪    币: 522
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
[QUOTE=sudami;669229]WINDBG不行? 不懂别乱说.''

(bp xxx, 切换到explorer.exe中,u xx即可.)

..

中间真没有隐藏内容[/QUOTE]

       回帖之前 认为WINDBG不行  
回帖之后认为可以了  
2009-8-11 05:48
0
雪    币: 608
活跃值: (91)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
第0x16处偏移就是服务表基址对吧-------0x10才对吧
8055c6a0  80504a70 00000000 0000011c 80504ee4
8055c6b0  bf999400 00000000 0000029b bf99a110

1: kd> dd bf999400
2009-8-11 10:10
0
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
8
.process /p csrss_eproc
dd poi(KeServiceDescriptorTableShadow+0x10)
2009-8-11 11:46
0
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
9
可能是符号问题 我这里就行
0x10处偏移存放的是另一张SSDT表(win32K.sys)
lkd> u KeServiceDescriptorTableShadow
nt!KeServiceDescriptorTableShadow:
805634e0 b058            mov     al,58h
805634e2 4e              dec     esi
805634e3 800000          add     byte ptr [eax],0
805634e6 0000            add     byte ptr [eax],al
805634e8 1c01            sbb     al,1
805634ea 0000            add     byte ptr [eax],al
805634ec cc              int     3
805634ed 205180          and     byte ptr [ecx-80h],dl
lkd> dd 805634e0
805634e0  804e58b0 00000000 0000011c 805120cc
805634f0  bf99a000 00000000 0000029b bf99ad10
80563500  00000000 00000000 00000000 00000000
80563510  00000000 00000000 00000000 00000000
80563520  804e58b0 00000000 0000011c 805120cc
80563530  00000000 00000000 00000000 00000000
80563540  00000000 00000000 00000000 00000000
80563550  00000000 00000000 00000000 00000000
lkd> dd bf99a000
bf99a000  bf9363a5 bf947f4c bf88c9c9 bf93fb1f
bf99a010  bf94956e bf936639 bf9366de bf83b491
bf99a020  bf948e8a bf934e3e bf949482 bf90f646
bf99a030  bf902112 bf8098fa bf949354 bf94ab5b
bf99a040  bf900a0f bf893abb bf949432 bf94ac8e
bf99a050  bf820f12 bf8dcaf3 bf87a240 bf8c28ef
bf99a060  bf910881 bf80e2b0 bf8dc79b bf94a953
bf99a070  bf94b85e bf813a5c bf80c856 bf8d178b
2009-8-11 12:28
0
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
10
805634e0  804e58b0 00000000 0000011c 805120cc        SSDT表(Ntoskrnel.exe)
805634f0   bf99a000 00000000 0000029b  bf99ad10        SSDT表  (win32K.sys)
KeServiceDescriptorTableShadow实际上是SSDT结构数组,也就是说KeServiceDescriptorTableShadow是一组系统描述表SSDT
2009-8-11 12:30
0
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
11
bf99a000是基址
2009-8-11 12:31
0
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
12
出现???????符号问题啊
2009-8-11 12:32
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
13

是因为那个地址不可读,没符号不会影响到内容的显示
2009-8-11 13:05
0
雪    币: 722
活跃值: (123)
能力值: ( LV12,RANK:300 )
在线值:
发帖
回帖
粉丝
14
你这个是Local Kernel Debug,默认是在Windbg.exe进程的空间,当然就可以访问。
楼主那个看起来应该是双机调试的。
2009-8-11 15:33
0
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
15
双机调试也应该可以看得到啊
2009-8-11 20:22
0
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
16
双机果真看不到
kd> u KeServiceDescriptorTableShadow
nt!KeServiceDescriptorTableShadow:
80553140 3020            xor     byte ptr [eax],ah
80553142 50              push    eax
80553143 800000          add     byte ptr [eax],0
80553146 0000            add     byte ptr [eax],al
80553148 1c01            sbb     al,1
8055314a 0000            add     byte ptr [eax],al
8055314c a4              movs    byte ptr es:[edi],byte ptr [esi]
8055314d 2450            and     al,50h
kd> dd 80553140
80553140  80502030 00000000 0000011c 805024a4
80553150  bf998300 00000000 0000029b bf999010
80553160  00000000 00000000 00000000 00000000
80553170  00000000 00000000 00000000 00000000
80553180  80502030 00000000 0000011c 805024a4
80553190  00000000 00000000 00000000 00000000
805531a0  00000000 00000000 00000000 00000000
805531b0  00000000 00000000 00000000 00000000
kd> dd bf998300
bf998300  ???????? ???????? ???????? ????????
bf998310  ???????? ???????? ???????? ????????
bf998320  ???????? ???????? ???????? ????????
bf998330  ???????? ???????? ???????? ????????
bf998340  ???????? ???????? ???????? ????????
bf998350  ???????? ???????? ???????? ????????
bf998360  ???????? ???????? ???????? ????????
bf998370  ???????? ???????? ???????? ????????
2009-8-11 20:27
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
你们看看这是我在双机调试的情况
kd> dd 80553140
80553140  80502030 00000000 0000011c 805024a4
80553150  bf997600 00000000 0000029b bf998310
80553160  00000000 00000000 00000000 00000000
80553170  00000000 00000000 00000000 00000000
80553180  80502030 00000000 0000011c 805024a4
80553190  00000000 00000000 00000000 00000000
805531a0  00000000 00000000 00000000 00000000
805531b0  00000000 00000000 00000000 00000000
kd> dd bf997600
bf997600  ???????? ???????? ???????? ????????
bf997610  ???????? ???????? ???????? ????????
bf997620  ???????? ???????? ???????? ????????
bf997630  ???????? ???????? ???????? ????????
bf997640  ???????? ???????? ???????? ????????
bf997650  ???????? ???????? ???????? ????????
bf997660  ???????? ???????? ???????? ????????
bf997670  ???????? ???????? ???????? ????????
我的SHADOW表是空的,上网找了些资料,说是要在GUI线程上下文才能获取得到,
于是我就写了个MFC的来进行DeviceIoControl获取,但是测试表明获取不成功,是不是和我的操作系统有关?
我的GHO版的XP
2009-8-11 22:45
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
那样RKU是怎么获取得呢,
虽然网上好像很多文章都是写怎么获得shadow表的,但是就是没有说遇到这样情况的,即使有提到的也没有说具体实现的方法!好郁闷了,刚学驱动现在获得SHADOW表就弄不下去了,
2009-8-11 22:55
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
不好意思,我说错了,问题解决了,
原来我说写了个MFC的来进行DeviceIoControl获取,但是测试表明获取不成功,这是错误的,是因为我的代码有错所以不成功!
我总结下:
在WINDBG下看SHADOW表可能是看不见表中有函数地址,
解决的方法是通过写个GUI的程序,发送IRP_MJ_DEVICE_CONTROL来使驱动处于GUI线程上下文中,这样就能获取SHADOW表。
希望能为初学的朋友有点帮助
2009-8-11 23:14
0
雪    币: 229
活跃值: (498)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
20
并不是你用mfc,你的代码就是在GUI线程里面执行的.....这个你要清楚
2009-8-11 23:15
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
我也遇到一样的问题了,用windbg本地内核调试可以查看,但是如果联调就看不到,全是问号。我写驱动也不能访问,谁知道究竟怎么回事?是不是和代码所在的进程有关啊?
2009-8-12 12:55
0
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
22
都说了方法了,.process /p
2009-8-12 13:49
0
雪    币: 146
活跃值: (33)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
23
双机调试已解决,感谢各位大大的方法
方法就是上面几位大大说的:
   !process 0 0
    .process /p XXXXXXXXX
2009-8-12 16:47
0
游客
登录 | 注册 方可回帖
返回
//