是什么!NT PsActiveProcessHead?

问题描述 投票:-2回答:1

背景:使用波动时,变量“PsActiveProcessHead”可以通过“工具KDbg”扫描发现(死系统),也可以在Windows故障转储(再次,死系统)在_DMP_HEADER找到。

在活动的系统,这个符号的地址可以通过发现(LKD >> X!NT PsActiveProcessHead)

问:要的Windows内核对象/结构“!NT PsActiveProcessHead”变量属于/指的是? (到对象/结构这个符号指向?)

例如,“ActiveProcessLinks”,这也是一个“_LIST_ENTRY”结构(等同于“ActiveProcessHead”)属于_EPROCESS对象。有没有这样的对象为“ActiveProcessHead”呢?

谢谢

windows kernel windbg kernel-module
1个回答
1
投票

是的,它也指向一个双向链表(_LIST_ENTRY),以及更精确地_EPROCESS.ActiveProcessLinks

检查双向链表指向nt!PsActiveProcessHead

0: kd> dt nt!_list_entry poi(nt!PsActiveProcessHead)
 [ 0xffffc582`ca5c3328 - 0xfffff804`40c10680 ]
   +0x000 Flink            : 0xffffc582`ca5c3328 _LIST_ENTRY [ 0xffffc582`d11d1328 - 0xffffc582`ca4b15e8 ]
   +0x008 Blink            : 0xfffff804`40c10680 _LIST_ENTRY [ 0xffffc582`ca4b15e8 - 0xffffc582`edada368 ]

下一篇文章:

0: kd> dt nt!_list_entry poi(0xffffc582`ca5c3328)
 [ 0xffffc582`d0023428 - 0xffffc582`ca5c3328 ]
   +0x000 Flink            : 0xffffc582`d0023428 _LIST_ENTRY [ 0xffffc582`d54243a8 - 0xffffc582`d11d1328 ]
   +0x008 Blink            : 0xffffc582`ca5c3328 _LIST_ENTRY [ 0xffffc582`d11d1328 - 0xffffc582`ca4b15e8 ]

入门处的抵消ActiveProcessLink结构_EPROCESSis:

0: kd> ? @@c++(#FIELD_OFFSET(nt!_eprocess, ActiveProcessLinks))
Evaluate expression: 744 = 00000000`000002e8

只是与前两个flinks我在上面的输出确认(注:我们消除失调ActiveProcessLinksfrom我们拥有的地址,然后倾倒在EPROCESS结构ImageFileName)。这仅仅证明了它确实是指向ActiveProcessLinks_EPROCESS

0: kd> dt nt!_eprocess 0xffffc582`ca5c3328-@@c++(#FIELD_OFFSET(nt!_eprocess , ActiveProcessLinks)) ImageFileName
   +0x450 ImageFileName : [15]  "Registry"

0: kd> dt nt!_eprocess 0xffffc582`d0023428-@@c++(#FIELD_OFFSET(nt!_eprocess , ActiveProcessLinks)) ImageFileName
   +0x450 ImageFileName : [15]  "csrss.exe"

倾倒整个列表:

0: kd> !list "-t nt!_eprocess.ActiveProcessLinks.Flink -e -x \"dt nt!_eprocess ImageFileName\"(poi(nt!PsActiveProcessHead) - @@c++(#FIELD_OFFSET(nt!_eprocess, ActiveProcessLinks)))"

dt nt!_EPROCESS ImageFileName 0xffffc582ca4b1300
   +0x450 ImageFileName : [15]  "System"

dt nt!_EPROCESS ImageFileName 0xffffc582ca5c3040
   +0x450 ImageFileName : [15]  "Registry"

dt nt!_EPROCESS ImageFileName 0xffffc582d11d1040
   +0x450 ImageFileName : [15]  "smss.exe"

dt nt!_EPROCESS ImageFileName 0xffffc582d0023140
   +0x450 ImageFileName : [15]  "csrss.exe"

 [...snip....]

所以基本上它意味着是当前活动进程的列表。它指向_EPROCESS.ActiveProcessLinks双向链表。

© www.soinside.com 2019 - 2024. All rights reserved.