gpt4 book ai didi

c# - 使用 MiniDump (DbgHelp.h) 获取句柄数据

转载 作者:可可西里 更新时间:2023-11-01 09:37:03 26 4
gpt4 key购买 nike

我正在努力通过 Minidump (DbgHelp.h) 获取句柄信息。

我正在从映射文件流中获取 MINIDUMP_HANDLE_DESCRIPTOR_2 列表。然后,我通过使用 ObjectInfoRva 字段为每个描述符获取一个 MINIDUMP_HANDLE_OBJECT_INFORMATION

但是我无法理解这个MINIDUMP_HANDLE_OBJECT_INFORMATION结构给我提供了什么信息,我在网上找不到任何例子来从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 结构做了一些实验

当我获取该结构时,我能够从 RVA 地址读取具有 SizeOfInfo 大小的字符串。在这里,我正在获取“目录”作为我获得的所有句柄描述符上的字符串...

文档链接:

https://msdn.microsoft.com/en-us/library/windows/desktop/ms680375(v=vs.85).aspx

任何帮助将不胜感激:)

我尝试应用它的过程使用 WaitForMultipleObjectsWaitForSingleObject Kernel32 调用。

链接到我的实现:

https://github.com/Pavel-Durov/Multithreading-Debugging-Asignments/blob/master/Assignments/Assignments.Core/Handlers/MiniDumpHandler.cs

链接到 WinDbg !handle 我在同一个转储文件上执行的命令输出: https://docs.google.com/document/d/1Hjid-2dcM0aZrg5A1p5VrCBSysU_VQhynXdBAvXV29Q/edit?usp=sharing

也许问题是我没有为我的 MINIDUMP_HANDLE_OBJECT_INFORMATION_TYPE 枚举设置有效值,有没有人熟悉这个枚举值声明的可靠来源?我没有发现任何官方信息。

只是为了说清楚。

在 WinDbj 中,我得到的信息与从 MINIDUMP_HANDLE_DESCRIPTOR_2 得到的信息相同,例如,如果 WinDbg !handle 命令有这个输出:

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 类型。

无法获取的信息位于MINIDUMP_HANDLE_OBJECT_INFORMATION 结构中。这在 !hanlde 命令输出中不可见。

什么样的信息应该位于 MINIDUMP_HANDLE_OBJECT_INFORMATION 中?

最佳答案

经过几个小时的艰难 - 调试我的托管代码并将其与 C++ 代码示例进行比较 - 我发现我的错误与 MINIDUMP_HANDLE_OBJECT_INFORMATION 结构读取 - 我没有计算 rva + baseMinidump 适本地处理。

现在它工作了,我能够获得句柄的附加信息 :)

Mu 代码可以在这里找到: https://github.com/Pavel-Durov/Multithreading-Debugging-Asignments/blob/master/Assignments/Assignments.Core/Handlers/MiniDumpHandler.cs

第 144 行,DealWithHandleInfo 函数

关于c# - 使用 MiniDump (DbgHelp.h) 获取句柄数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35242105/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com