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

Debugging 如何使用DbgHelp访问转储中的PEB(进程环境块),debugging,minidump,dbghelp,Debugging,Minidump,Dbghelp,我发现了一个使用调试器引擎API在转储中获取PEB的。使用DbgHelp是否可以实现这一点?拥有使用DbgHelp提取注释和异常信息的现有代码。如果可能的话,我想从PEB获取一些信息。有一个!WinDbg中的peb命令,用于转储。另请参见此处:这里有一个!WinDbg中的peb命令,用于转储。另请参见此处:您可以使用该函数从转储文件中读取流。只需将转储文件读入内存或将其映射到内存中,然后使用此功能 访问PEB。从转储文件中读取ThreadListStream。 MINIDUMP_THREAD_L

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

有一个!WinDbg中的peb命令,用于转储。另请参见此处:

这里有一个!WinDbg中的peb命令,用于转储。另请参见此处:

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

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

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

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

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

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

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

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

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


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

非常确定的方法是使用Memory64列表和MemoryFolist流获取存储PEB的内存,但不确定如何执行。也许对你有帮助。我还应该提到,PEB中的大部分信息可以通过其他可能更安全的方式获得。谢谢。这篇文章是关于从一个正在运行的进程中获取PEB的。我对从转储文件中获取它感兴趣。非常确定的方法是使用Memory64List和MemoryFolist流获取存储PEB的内存,但不确定如何进行。也许对你有帮助。我还应该提到,PEB中的大部分信息可以通过其他可能更安全的方式获得。谢谢。这篇文章是关于从一个正在运行的进程中获取PEB的。我对从转储文件中获取它感兴趣。