Windows进程描述符

有一个Flink和Blink(前向链接和后向链接)用于双向链接的进程列表。 有一个进程标识符。 所有这些都被封装在一个被称为PEPROCESS或_KPROCESS的结构中。 但是这些结构在哪里?这个结构中的其他元素是什么?

或者,如果答案既不简短也不简单,如果不在文档或头文件中,哪里可以find引用? (这是我看的地方,可能忽略了一些东西。)

EPROCESS参考

EPROCESS结构是一个不透明的结构,用作进程的进程对象。

某些例程(如PsGetProcessCreateTimeQuadPart)使用EPROCESS来标识要在其上运行的进程。 驱动程序可以使用PsGetCurrentProcess例程来获取指向当前进程的进程对象的指针,并可以使用ObReferenceObjectByHandle例程来获取指向与指定句柄关联的进程对象的指针。 PsInitialSystemProcess全局变量指向系统进程的进程对象。

请注意,一个进程对象是一个对象管理器对象。 驱动程序应该使用ObReferenceObject和ObDereferenceObject等对象管理器例程来维护对象的引用计数。

这意味着,你不应该关心过程结构的成员是什么。 尽管如此,还是有详细说明工艺结构布局的资料。

本书更详细地描述了个人成员。

EPROCESS结构记录在Windows调试符号中。

当使用windbg连接到内核时,假设您已经正确设置了调试符号,那么发出命令“dt nt!_EPROCESS”应该为您提供特定于您所连接的内核版本的EPROCESS结构的布局。

EPROCESS结构特别不透明,只能通过检查构建调试符号导出的数据类型才能在每个构建中找到。

所以你可以做到以下几点:

  1. 在这里下载volatility
  2. 如果您愿意,可以在其样本内存转储或您自己的转储上运行volatility
  3. 使用volshell.py插件运行

    dt('_EPROCESS')

这将在Windows内核中产生EPROCESS结构和各种其他结构的输出

或者你可以在这里看到结构的内容

这也可能是有用的