能力值:
( LV4,RANK:50 )
|
-
-
2 楼
SSDTSHADOW 的地址 只GUI线程可以访问
用个R3的GUI线程IO就可以了
WINDBG 不行
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
我也遇到这样的问题了,是不是要用R3下的程序来加载程序?
|
能力值:
( LV12,RANK:1010 )
|
-
-
4 楼
WINDBG不行? 不懂别乱说.''
(bp xxx, 切换到explorer.exe中,u xx即可.)
..
中间真没有隐藏内容
|
能力值:
( 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
|
能力值:
( LV4,RANK:50 )
|
-
-
6 楼
[QUOTE=sudami;669229]WINDBG不行? 不懂别乱说.'' (bp xxx, 切换到explorer.exe中,u xx即可.) ..
中间真没有隐藏内容[/QUOTE]
回帖之前 认为WINDBG不行
回帖之后认为可以了
|
能力值:
( LV4,RANK:50 )
|
-
-
7 楼
第0x16处偏移就是服务表基址对吧-------0x10才对吧
8055c6a0 80504a70 00000000 0000011c 80504ee4
8055c6b0 bf999400 00000000 0000029b bf99a110
1: kd> dd bf999400
|
能力值:
( LV12,RANK:420 )
|
-
-
8 楼
.process /p csrss_eproc
dd poi(KeServiceDescriptorTableShadow+0x10)
|
能力值:
( 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
|
能力值:
( LV12,RANK:210 )
|
-
-
10 楼
805634e0 804e58b0 00000000 0000011c 805120cc SSDT表(Ntoskrnel.exe)
805634f0 bf99a000 00000000 0000029b bf99ad10 SSDT表 (win32K.sys)
KeServiceDescriptorTableShadow实际上是SSDT结构数组,也就是说KeServiceDescriptorTableShadow是一组系统描述表SSDT
|
能力值:
( LV12,RANK:210 )
|
-
-
11 楼
bf99a000是基址
|
能力值:
( LV12,RANK:210 )
|
-
-
12 楼
出现???????符号问题啊
|
能力值:
( LV9,RANK:610 )
|
-
-
13 楼
是因为那个地址不可读,没符号不会影响到内容的显示
|
能力值:
( LV12,RANK:300 )
|
-
-
14 楼
你这个是Local Kernel Debug,默认是在Windbg.exe进程的空间,当然就可以访问。
楼主那个看起来应该是双机调试的。
|
能力值:
( LV12,RANK:210 )
|
-
-
15 楼
双机调试也应该可以看得到啊
|
能力值:
( 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 ???????? ???????? ???????? ????????
|
能力值:
( 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
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
那样RKU是怎么获取得呢,
虽然网上好像很多文章都是写怎么获得shadow表的,但是就是没有说遇到这样情况的,即使有提到的也没有说具体实现的方法!好郁闷了,刚学驱动现在获得SHADOW表就弄不下去了,
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
不好意思,我说错了,问题解决了,
原来我说写了个MFC的来进行DeviceIoControl获取,但是测试表明获取不成功,这是错误的,是因为我的代码有错所以不成功!
我总结下:
在WINDBG下看SHADOW表可能是看不见表中有函数地址,
解决的方法是通过写个GUI的程序,发送IRP_MJ_DEVICE_CONTROL来使驱动处于GUI线程上下文中,这样就能获取SHADOW表。
希望能为初学的朋友有点帮助
|
能力值:
( LV10,RANK:170 )
|
-
-
20 楼
并不是你用mfc,你的代码就是在GUI线程里面执行的.....这个你要清楚
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
我也遇到一样的问题了,用windbg本地内核调试可以查看,但是如果联调就看不到,全是问号。我写驱动也不能访问,谁知道究竟怎么回事?是不是和代码所在的进程有关啊?
|
能力值:
( LV12,RANK:420 )
|
-
-
22 楼
都说了方法了,.process /p
|
能力值:
( LV5,RANK:60 )
|
-
-
23 楼
双机调试已解决,感谢各位大大的方法
方法就是上面几位大大说的:
!process 0 0
.process /p XXXXXXXXX
|
|
|