【发布时间】:2014-03-04 05:09:19
【问题描述】:
是否可以从文件/设备句柄(由 CreateFile API 返回)中检索目标设备名称 (\Device\ExampleDevice) 或文件名。
实际上,我有一个用户模式应用程序,它使用 DeviceIoControl() 与内核驱动程序进行通信。所以当应用程序运行时,我在 Kernel32!DeviceIoControl 处设置了一个断点。因此,当应用程序遇到断点时,我从堆栈中收集了目标设备句柄,应用程序正在向其发送 IOCTL。我们知道第二个参数是目标设备句柄。
我想知道,有没有什么方法可以从句柄(在这种情况下为 0x000007bc)获取设备名称 (\Device\ExampleDevice),无需在 CreateFile 处设置断点?
我尝试了下面的东西。请提出建议。
0:000> bp Kernel32!DeviceIoControl
0:000> g
ModLoad: 76360000 76370000 C:\WINDOWS\system32\WINSTA.dll
ModLoad: 77e70000 77f01000 C:\WINDOWS\system32\RPCRT4.dll
ModLoad: 77dd0000 77e6b000 C:\WINDOWS\system32\ADVAPI32.dll
ModLoad: 5b860000 5b8b4000 C:\WINDOWS\system32\NETAPI32.dll
ModLoad: 77d40000 77dd0000 C:\WINDOWS\system32\USER32.dll
ModLoad: 77f10000 77f56000 C:\WINDOWS\system32\GDI32.dll
Breakpoint 1 hit
eax=0022f6a4 ebx=0022f850 ecx=77e46520 edx=000007bc esi=00000000 edi=00000000
eip=7c801625 esp=0022f620 ebp=0022f678 iopl=0 nv up ei pl zr na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=0038 gs=0000 efl=00000246
kernel32!DeviceIoControl:
7c801625 6a14 push 14h
0:000> d esp
0022f620 77dd9672 000007bc 00390008 77e462c0
0022f630 00000100 0022f6b0 00000100 0022f6a4
0022f640 00000000 77e462a0 0022f7c8 00000018
0022f650 00000000 0022f66c 00000040 00000000
0022f660 00000000 00000000 00000000 001e001c
0022f670 77dd988c 000007bc 0022f7b4 77dd8724
0022f680 77e462c0 00000100 0022f6b0 0022f6a4
0022f690 00000000 00000000 00000000 00000100
0:000> !handle 000007bc f
Handle 7bc
Type File
Attributes 0
GrantedAccess 0x100001:
Synch
Read/List
HandleCount 2
PointerCount 3
No Object Specific Information available
0:000> !handle 000007bc
Handle 7bc
Type File
0:000> !handle 000007bc 7
Handle 7bc
Type File
Attributes 0
GrantedAccess 0x100001:
Synch
Read/List
HandleCount 2
PointerCount 3
提前致谢,
【问题讨论】:
-
您所做的是正确的,但由于某种奇怪的原因无法获得特定于对象的信息,大概您的所有符号都是正确的?
-
是的!我想是的! “!handle 000007bc 7”输出是否应该包含开发人员。一般情况下的名称??
-
如果可用,它会输出句柄对象特定信息,所以我希望文件路径在那里
-
我也有同样的问题。使用
procdump -ma,我无法获得特定的对象信息。在另一个时间从另一个进程获取的转储没有这个问题。我现在要么是权利问题,要么是转储服务和普通流程之间的区别。
标签: windows debugging driver windbg device-driver