如何使用DbgHelp访问转储中的PEB(进程环境块)

时间:2013-02-28 17:19:14

标签: debugging minidump dbghelp

我发现example使用调试器引擎API来获取转储中的PEB。这可能使用DbgHelp吗?现有代码使用DbgHelp来提取注释和异常信息。如果可能的话,想从PEB获取一些信息。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

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

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

从minidump文件中读取内存时,您需要使用自己的内存读取器功能。