索引id没有错,我跟过的,是mov eax, 1248   callxxxxxx --> mov edx,esp  sysenter
dd 8080d8b0+1248*4应该是没有错的,但是之后dd 21ae830f却不对了(内容空)

过程如下:

引用:
lkd> dd KeServiceDescriptorTable
8088a500  8080d8b0 00000000 0000011c 80840fc4
8088a510  00000000 00000000 00000000 00000000
8088a520  00000000 00000000 00000000 00000000
8088a530  00000000 00000000 00000000 00000000
8088a540  00000002 00002710 bf80c227 00000000
8088a550  f8cbca80 f86f74a0 83adfa90 80a38040
8088a560  00000000 00000000 ffea8ad6 ffffffff
8088a570  094c9316 01c872f6 00000000 00000000
lkd> dd 8080d8b0+1248*4
808121d0  21ae830f 558b0001 8153e80c c25dffff
808121e0  90900008 8b909090 ec8b55ff 08758b56
808121f0  8b0c46ff 8113e8ce c085ffff e25e840f
80812200  5d5e0000 900004c2 ffffffff 80930288
80812210  80930291 ffffffff 00000000 808a3594
80812220  ffffffff 00000000 80930168 90909090
80812230  ffffffff 8092ee28 8092ee3b 8bf3b70f
80812240  0fc72bc6 d233c2af 0007d0bb 83f3f700
lkd> dd 21ae830f
21ae830f  ???????? ???????? ???????? ????????
21ae831f  ???????? ???????? ???????? ????????
21ae832f  ???????? ???????? ???????? ????????
21ae833f  ???????? ???????? ???????? ????????
21ae834f  ???????? ???????? ???????? ????????
21ae835f  ???????? ???????? ???????? ????????
21ae836f  ???????? ???????? ???????? ????????
21ae837f  ???????? ???????? ???????? ????????
所以我疑惑了,感觉是不是不是1248*4不应该是乘以四?我感觉这也太大了。。。
翻一下资料Windows XP Build 2600 System Services 中索引编号是这样排列的:
0000~00FF
0100~011B
1000~1299
索引号并不是连续的,所以我感觉直接用1248*4十分不妥。
接着我直接数了NtUserValidateHandleSecure的顺位(第几个)
然后用dd 8080d8b0+顺位数*4,感觉也不对。

那就最后请问各位,如何找到索引编号为1248的函数NtUserValidateHandleSecure的地址?

  • 标 题:答复
  • 作 者:xIkUg
  • 时 间:2008-02-20 09:08

KeServiceDescriptorTableShadow+248*4

  • 标 题:答复
  • 作 者:老Y
  • 时 间:2008-02-20 09:33

KeServiceDescriptorTableShadow 其实是个数组,Index的高四位表示使用的是这个数组的下标,比如0x1248,就应该是KeServiceDescriptorTableShadow[1].Base + 0x248 * sizeof(ULONG),一般来说使用1下标的函数都在Win32K.sys实现.不知道我说清楚了没

  • 标 题:答复
  • 作 者:vrowang123
  • 时 间:2008-02-20 14:49

引用:
最初由 老Y发布 查看帖子
symbols加载不正确
上MSoft下载了WindowsXP-KB835935-SP2-slp-Symbols

安装。

打开Windbg,Ctrl+s,输入了C:\WINDOWS\Symbols,点ok

重新进入后出现:

引用:
Microsoft (R) Windows Debugger Version 6.8.0004.0 X86
Copyright (c) Microsoft Corporation. All rights reserved.

Unable to read head of debugger data list
Connected to Windows XP 2600 x86 compatible target, ptr64 FALSE
Symbol search path is: C:\WINDOWS\Symbols
Executable search path is: 
*** ERROR: Module load completed but symbols could not be loaded for ntoskrnl.exe
KdDebuggerDataBlock not available!
*******************************************************************************
WARNING: Local kernel debugging requires booting with kernel
debugging support (/debug or bcdedit -debug on) to work optimally.
*******************************************************************************
Windows XP Kernel Version 2600 UP Free x86 compatible
Product: WinNt, suite: TerminalServer SingleUserTS
Kernel base = 0x80800000 PsLoadedModuleList = 0x80883620
Debug session time: Wed Feb 20 14:47:31.875 2008 (GMT+8)
System Uptime: 0 days 3:54:28.467
lkd> dd KdDebuggerDataBlock
Couldn't resolve error at 'KdDebuggerDataBlock'
lkd> dd KeServiceDescriptorTable
Couldn't resolve error at 'KeServiceDescriptorTable'
想把这个问题解决因为以后可能要到网吧调程序了.

  • 标 题:答复
  • 作 者:scz
  • 时 间:2008-02-22 09:08

引用:
最初由 vrowang123发布 查看帖子
上MSoft下载了WindowsXP-KB835935-SP2-slp-Symbols
打开Windbg,Ctrl+s,输入了C:\WINDOWS\Symbols,点ok
不必装集合的符号包。直接指定环境变量

set _NT_SYMBOL_PATH=X:\<symbols path>;srv*X:\<symbols path>*http://msdl.microsoft.com/download/symbols

或者在kd中.sympath手工指定=后的内容。

还可以一次性同步一次,效果相当于装集合的"最新"符号包

symchk /op /r x:\windows\system32