Windows 什么是nt!PsActiveProcessHead?

Windows 什么是nt!PsActiveProcessHead?,windows,kernel,windbg,kernel-module,Windows,Kernel,Windbg,Kernel Module,背景: 使用volatility时,变量“PsActiveProcessHead”可以通过“KDBG”扫描(死系统)找到,也可以在Windows崩溃转储(同样是死系统)的_DMP_头上找到 在实时系统中,此符号的地址可以通过 (lkd>>x nt!PsActiveProcessHead) 问题: “nt!PsActiveProcessHead”变量属于/引用哪个windows内核对象/结构?(此符号指向哪个对象/结构?) 例如,“ActiveProcessLinks”也是一个“\u列表\u条目”

背景: 使用volatility时,变量“PsActiveProcessHead”可以通过“KDBG”扫描(死系统)找到,也可以在Windows崩溃转储(同样是死系统)的_DMP_头上找到

在实时系统中,此符号的地址可以通过 (lkd>>x nt!PsActiveProcessHead)

问题: “nt!PsActiveProcessHead”变量属于/引用哪个windows内核对象/结构?(此符号指向哪个对象/结构?)

例如,“ActiveProcessLinks”也是一个“\u列表\u条目”结构(与“ActiveProcessHead”相同),它属于\u EPROCESS对象。“ActiveProcessHead”也有这样的对象吗


谢谢

是的,它还指向一个双链接列表(
\u list\u ENTRY
),更准确地说是指向
\u EPROCESS.ActiveProcessLinks

正在检查
nt!指向的双链接列表!PSActive进程头

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
\u EPROCESS
结构中的偏移量:

0: kd> ? @@c++(#FIELD_OFFSET(nt!_eprocess, ActiveProcessLinks))
Evaluate expression: 744 = 00000000`000002e8
只需确认上面输出中的前两个flink(注意:我们从地址中删除
ActiveProcessLinks
的偏移量,然后从EPROCESS结构中转储
ImageFileName
)。它只是证明它确实指向
\u EPROCESS
中的
ActiveProcessLinks

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....]
因此,基本上它是指当前活动进程的列表。它指向
\u EPROCESS.ActiveProcessLinks
中的双链接列表