ava*_*kar 6 c++ windows dbghelp
我有一些原生的(如在/SUBSYSTEM:NATIVE)Windows程序,我想生成minidumps以防万一他们崩溃.通常,我会使用dbghelp.dll,但由于本机进程只能使用从中导出的函数ntdll.dll,所以我不能.
所以我自己实施了自卸车.它差不多完成了,但不幸的是,我一直无法在崩溃的进程中找到卸载的模块列表(列表肯定存储在某个地方,因为WinDbg能够显示它).
在哪里可以找到Windows进程中已卸载模块的列表?
编辑:列表肯定存储在进程内存中的某个位置,即使我在卸载模块后附加它,WinDbg也可以显示列表.WinDbg的文档中还有一个注释:
Microsoft Windows Server 2003和更高版本的Windows维护用户模式进程的卸载模块列表.[...]
请参阅RtlGetUnloadEventTrace和RtlGetUnloadEventTraceEx。
我不完全确定它是如何工作的,但我相信实际的列表是由 ntdll.dll 存储在加载程序代码中的。它跟踪特定进程中最后卸载的 16 个(或 64 个,根据 MSDN)DLL。该信息不与 PEB 或 PEB_LDR_DATA 链接。
| 归档时间: |
|
| 查看次数: |
1609 次 |
| 最近记录: |