阅读:1663回复:7
Hook ServiceDescriptorTableShadow问题请教
我是一个新手,请大家帮帮我。
我想恢复原始 SHADOW表。 操作系统XP SP1,装了虚拟机,用WINDBG调试内核,成功连接以后 0: kd> dd nt!KeServiceDescriptorTableShadow 8054a180 804fefd8 00000000 0000011c 804ff44c 8054a190 bf998c40 00000000 0000029b bf9927a0 8054a1a0 00000000 00000000 00000000 00000000 8054a1b0 00000000 00000000 00000000 00000000 8054a1c0 804fefd8 00000000 0000011c 804ff44c 8054a1d0 00000000 00000000 00000000 00000000 8054a1e0 00000000 00000000 00000000 00000000 8054a1f0 00000000 00000000 00000000 00000000 0: kd> dd bf998c40 bf998c40 ???????? ???????? ???????? ???????? bf998c50 ???????? ???????? ???????? ???????? bf998c60 ???????? ???????? ???????? ???????? bf998c70 ???????? ???????? ???????? ???????? bf998c80 ???????? ???????? ???????? ???????? bf998c90 ???????? ???????? ???????? ???????? bf998ca0 ???????? ???????? ???????? ???????? bf998cb0 ???????? ???????? ???????? ???????? 0: kd> dd win32k!W32pServiceTable bf998c40 ???????? ???????? ???????? ???????? bf998c50 ???????? ???????? ???????? ???????? bf998c60 ???????? ???????? ???????? ???????? bf998c70 ???????? ???????? ???????? ???????? bf998c80 ???????? ???????? ???????? ???????? bf998c90 ???????? ???????? ???????? ???????? bf998ca0 ???????? ???????? ???????? ???????? bf998cb0 ???????? ???????? ???????? ???????? 为什么win32k!W32pServiceTable里面会是这样的呢? 引用第chenting1987于2007-07-21 10:53发表的 : 0: kd> .process Implicit process is now 80549c00 然后 0: kd> !process 0 0 **** NT ACTIVE PROCESS DUMP **** PROCESS 81ef0280 SessionId: 0 Cid: 0254 Peb: 7ffdf000 ParentCid: 0214 DirBase: 06fee000 ObjectTable: e1386cf8 HandleCount: 312. Image: CSRSS.EXE 然后 0: kd> .process 81ef0280 Implicit process is now 81ef0280 0: kd> .process Implicit process is now 80549c00 结果一看,还是在原来的进程 请问,我的操作对吗,如果不对,应该如何操作,才能正确的看到 函数地址。 我很菜,请多指教,谢谢大家 |
|
沙发#
发布于:2007-11-23 02:35
请各位帮帮我。
|
|
板凳#
发布于:2007-11-24 19:15
一个很土的方法,先启动一个调用GUI相关的进程,然后切到改进程,这样就可以看到shadow表导出的函数了
|
|
|
地板#
发布于:2007-11-24 19:36
突然想起以前的一个误区了,牛人们都说win32k是被换出内存的,同时操作系统教程告诉我换出的东西是要检查和磁盘上的数据是否一致,不一致就要写回磁盘文件的。不过由于当时没有把数据和代码这两个东西分清楚,所以我当时就想这个win32k导出的表和win32k磁盘上文件中的表不一样(我们HOOK了嘛),这下不就完了,win32k磁盘文件都要被修改了!!其实win32k中根本就没有这张表,换出内存的只是OS动态创建的表而已,以前真是 ....
不过到现在还是不明白的是,为什么win32k要被换出内存,现在的计算机上都跑的是GUI程序,每调一次就吧win32k换进换出,系统不怕开销啊,望达人来解惑下 |
|
|
地下室#
发布于:2007-11-25 11:07
引用第2楼wdnfa于2007-11-24 19:15发表的 : 请问用WINDBG虚拟机调试,如何可以切换到指定进程? 0: kd> .process Implicit process is now 80549c00 然后 0: kd> !process 0 0 **** NT ACTIVE PROCESS DUMP **** PROCESS 81ef0280 SessionId: 0 Cid: 0254 Peb: 7ffdf000 ParentCid: 0214 DirBase: 06fee000 ObjectTable: e1386cf8 HandleCount: 312. Image: CSRSS.EXE 然后 0: kd> .process 81ef0280 Implicit process is now 81ef0280 0: kd> .process Implicit process is now 80549c00 结果一看,还是在原来的进程 应该如何做,请给我一个列子,谢谢 |
|
5楼#
发布于:2007-11-25 15:49
Win32k的表是又是换出而已,hook时如果换出就失败了,可以通过mdl把他放入的说~
另外说一下:windbg切换进程貌似有时会切换失败~~ 建议local kernel测试一下 |
|
|
6楼#
发布于:2007-11-25 23:05
引用第5楼killvxk于2007-11-25 15:49发表的 : 呵呵,让我蒙了一下,“是又是换出而已”--我还以为又是黑语来了,原来是“是有时换出而已”,不过奇怪的是,好像这个表通常都是被换出去了。 不过KILLVXK说的MDL方法我还是第一次听说,得把它弄明白。 |
|
|
7楼#
发布于:2007-11-25 23:07
自己下断点断到GUI进程空间,可以看到表了哦
原来切换进程的命令是这个,学习了,英文帮助文档看起来真头大....无缘CET6,泪奔 |
|
|