我很难通过Minidump获得处理信息(DbgHelp.h)。
我正在从映射的文件流中获得一个MINIDUMP_HANDLE_DESCRIPTOR_2列表。然后,我将使用MINIDUMP_HANDLE_OBJECT_INFORMATION字段为每个描述符获取一个ObjectInfoRva。
然而,我不明白这个MINIDUMP_HANDLE_OBJECT_INFORMATION结构给了我什么信息,我在web上找不到从MINIDUMP_HANDLE_OBJECT_INFORMATION中提取有意义信息的任何例子,而且文档也没有多大帮助。
如何使用MINIDUMP_HANDLE_OBJECT_INFORMATION结构数据获得人类可读的数据?我是说我需要怎么处理它?我总是在InfoType文件中得到0,意思是- MiniHandleObjectInformationNone。
MINIDUMP_HANDLE_OBJECT_INFORMATION结构:
public struct MINIDUMP_HANDLE_OBJECT_INFORMATION
{
public uint NextInfoRva;
public MINIDUMP_HANDLE_OBJECT_INFORMATION_TYPE InfoType;
public UInt32 SizeOfInfo;
}我用MINIDUMP_HANDLE_OBJECT_INFORMATION struct做了一些实验
当我获得结构时,我能够从具有SizeOfInfo大小的RVA地址读取字符串。在这里,我可以在我得到的所有句柄描述符上使用“目录”作为字符串.
链接到doc:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms680375(v=vs.85).aspx
(如有任何帮助,将不胜感激:)
我的进程(我正在尝试应用它)使用WaitForMultipleObjects和WaitForSingleObject Kernel32调用。
链接到我的实现:
链接到WinDbg !handle命令输出,我在同一个转储文件:VQhynXdBAvXV29Q/edit?usp=sharing上执行该命令输出。
也许问题是我没有为我的MINIDUMP_HANDLE_OBJECT_INFORMATION_TYPE枚举设置一个有效值,是否有人熟悉这个枚举值声明的可靠源?我什么都没找到。
只是想说清楚.
在WinDbj中,我获得与MINIDUMP_HANDLE_DESCRIPTOR_2相同的信息,例如,如果WinDbg!WinDbg命令具有以下输出:
Handle 00000004
Type Directory
Handle 00000008
Type Directory
Handle 0000000c
Type Event
Handle 00000010
Type Event
Handle 00000014
Type File
…我可以从MINIDUMP_HANDLE_DESCRIPTOR_2 ObjectName和TypeName获得相同的数据,它们都是MINIDUMP_STRING类型的。
我无法获取的信息是位于结构中的信息。它在!hanlde命令输出中不可见。
什么样的信息应该位于MINIDUMP_HANDLE_OBJECT_INFORMATION中?
发布于 2016-03-15 07:33:39
在几个小时之后--调试托管代码并将其与C++代码示例进行比较--我发现了MINIDUMP_HANDLE_OBJECT_INFORMATION结构读取的错误--我没有正确计算rva + baseMinidump地址。
现在,我能够获得句柄的附加信息:)
第144行,DealWithHandleInfo函数
https://stackoverflow.com/questions/35242105
复制相似问题