2

进程的双链表有 Flink 和 Blink(Forward Link 和 Backward Link)。有一个进程标识符。所有这些都打包在一个结构中,该结构被称为 PEPROCESS 或 _KPROCESS。但是这些在哪里,这个结构中的其他元素是什么?

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

4

3 回答 3

2

EPROCESS 参考

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

一些例程,例如 PsGetProcessCreateTimeQuadPart,使用 EPROCESS 来识别要操作的进程。驱动程序可以使用 PsGetCurrentProcess 例程获取指向当前进程的进程对象的指针,并且可以使用 ObReferenceObjectByHandle 例程获取指向与指定句柄关联的进程对象的指针。PsInitialSystemProcess 全局变量指向系统进程的进程对象。

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

这意味着,您不应该关心流程结构的成员是什么。尽管如此,还是有一些资料详细说明了流程结构的布局。

本书更详细地描述了各个成员是什么。

于 2009-07-20T12:42:39.157 回答
0

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

因此,您可以执行以下操作:

  1. 在这里下载volatility
  2. volatility如果您愿意,可以在他们的示例内存转储之一或您自己的转储上运行。
  3. 使用 volshell.py 插件,运行

    dt('_EPROCESS')

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

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

也可能证明有用

于 2011-02-04T07:26:54.590 回答
0

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

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

于 2009-09-29T14:34:33.813 回答