首页 > 解决方案 > C++ PEB_LDR_DATA 访问模块列表

问题描述

我正在尝试访问和打印 PEB_LDR_DATA(InLoadOrderModuleList、InMemoryOrderModuleList、InInitializationOrderModuleList)中的 3 个模块列表。

我已经能够访问 InMemoryOrderModuleList 列表并打印它,但是当我尝试访问 InLoadOrderModuleList / InInitializationOrderModuleList 时出现无法识别的错误。

我是 C++ 和窗口 API 的新手,在阅读了一些网站中有关 PEB_LDR_DATA 结构的一些内容后,我看到了不同的结构。

例如:microsoftsandspritenirsoft

哪一个是对的?为什么我无法访问它们或如何访问它们。

标签: c++winapiprocess

解决方案


看起来您的 nirsoft 链接具有最完整的定义。Microsoft 的文档将只提供某些“公共”字段,以便它可以在以后更改定义。

Terminus 项目提供了良好的定义(基于标头和符号数据),显示了结构在 OS 版本之间的变化。

当前 Win10 (x64) 时代版本:

0x0000  unsigned long Length
0x0004  uint8_t Initialized
0x0008  void * SsHandle
0x0010  struct _LIST_ENTRY InLoadOrderModuleList
0x0020  struct _LIST_ENTRY InMemoryOrderModuleList
0x0030  struct _LIST_ENTRY InInitializationOrderModuleList
0x0040  void * EntryInProgress
0x0048  uint8_t ShutdownInProgress
0x0050  void * ShutdownThreadId

推荐阅读