【发布时间】:2013-05-23 11:42:11
【问题描述】:
查看windbg中的故障转储,我可以看到所有当前线程都停止在
> ~2k
ChildEBP RetAddr
00d2fcc8 7d4e27dc ntdll_7d600000!ZwWaitForMultipleObjects+0x15
或相同的 SingleObject 变体。
由于要等待的对象的句柄被传递给 ZwWaitForMultipleObjects,我假设我可以使用变体来计算出它正在使用的对象
!do <address>
使用正确的地址 -- 但我不知道如何构造正确的地址。我假设我需要从 ChildEBP 中获得一些补偿?
【问题讨论】:
-
!do用于托管对象 (.NET),但 ZwWFMO 很可能正在等待本机句柄。使用~2kb获得一个有据可查的 Win32 框架,进一步提升堆栈(希望是 WaitForMultipleObjects)及其前三个参数。您必须取消第二个参数才能获得句柄。当您获得句柄值时,请使用!handle <handle> f获取有关特定句柄的信息。如果您在挖掘句柄值方面需要帮助,请将输出发布到~2kb。
标签: windbg