1

我找到了一个使用调试器引擎 API 在转储中获取 PEB的示例。这可以使用 DbgHelp 吗?拥有使用 DbgHelp 提取注释和异常信息的现有代码。如果可能的话,想从 PEB 获取一些信息。

4

2 回答 2

1

您可以使用MiniDumpReadDumpStream函数从转储文件中读取流。只需将转储文件读入内存或映射到内存中,即可使用此功能。

访问 PEB。从转储文件中读取 ThreadListStream。MINIDUMP_THREAD_LIST 结构将包含一个 MINIDUMP_THREAD 结构数组,其中有一个 Teb 字段,其中包含该线程的 TEB 地址。

32 位和 64 位上的 TEB 和 PEB 的区别在于 64 位上的指针是 8 个字节。

这意味着对于 32 位进程,PEB 的地址可以在 TEB 的 0x30 偏移处找到。对于 64 位进程,PEB 的地址可以在 TEB 的 0x60 偏移处找到。

从小型转储文件中读取内存时,您需要滚动自己的内存读取器功能。

于 2016-04-20T16:11:42.017 回答
0

WinDbg 中有一个 !peb 命令,适用于转储。另请参阅:http ://windbg.info/doc/1-common-cmds.html

于 2016-03-21T13:12:26.177 回答