26.全局句柄表PspCidTable

本文详细介绍了PspCidTable,一个存储所有进程线程对象的系统句柄表,不同于私有句柄表,它用于进程查找和系统信息查询。学习如何定位特定进程句柄,以及访问对象时的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

https://www.cnblogs.com/kuangke/p/5761615.html

一、PspCidTable概述

PspCidTable也是一个句柄表,其格式与普通的句柄表是完全一样的,但它与每个进程私有的句柄表有以下不同:

1.PspCidTable中存放的对象是系统中所有的进程线程对象,其索引就是PID和TID。

2.PspCidTable中存放的直接是对象体(EPROCESS和ETHREAD),而每个进程私有的句柄表则存放的是对象头(OBJECT_HEADER)。

3.PspCidTable是一个独立的句柄表,而每个进程私有的句柄表以一个双链连接起来。
注意访问对象时要掩掉低三位,每个进程私有的句柄表是双链连接起来的,实际上ZwQuerySystemInformation枚举系统句柄时就是走的这条双链,隐藏进程的话,这条链也是要断掉的~~在遍历进程活动链表(ActiveProcessLinks)、DKOM隐藏进程时,还要把隐藏进程的句柄表从链表中摘去。

二、寻找一个进程句柄

在这里插入图片描述

接下来找下全局句柄表PspCidTable

在这里插入图片描述
目标进程ID是6108
换算成索引号:6108/4=0x5F7
已知一张表存放的数据是0x1000/0x10=0x100个
这个索引明显大于0x100,故算出在第几张表:
在0x5F7/0x100=5,所以在第五张表里(第一个表是0)的0xF7项,每一项的大小是0x10字节
也就是ffffc886`b10fd000+F7*0X10

1: kd> DQ ffffc886`b10fd000+F7*0X10
ffffc886`b10fdf70  85096a16`5080f1d3 00000000`00000000 
ffffc886`b10fdf80  85096ac4`7080ffe1 00000000`00000000
ffffc886`b10fdf90  85096941`e0800001 00000000`00000000
ffffc886`b10fdfa0  00000000`00000000 ffffc886`af1f9aa0
ffffc886`b10fdfb0  85096973`80800001 00000000`00000000
ffffc886`b10fdfc0  00000000`00000000 ffffc886`aacb6750
ffffc886`b10fdfd0  00000000`00000000 ffffc886`affff870
ffffc886`b10fdfe0  8509699b`d080fff9 00000000`00000000

win10需要换算才能得到真正的对象地址
(85096a165080f1d3>>16)&FFFF000000000000=FFFF85096A165080(全局句柄表直接指向对象,
和程序句柄表不一样,不需要加上_object_header的大小)

 kd> dt _eprocess FFFF85096A165080
nt!_EPROCESS
   +0x000 Pcb              : _KPROCESS
   +0x438 ProcessLock      : _EX_PUSH_LOCK
   +0x440 UniqueProcessId  : 0x00000000`000017dc Void    ***和截图PID一致***
   +0x448 ActiveProcessLinks : _LIST_ENTRY [ 0xffff8509`6ac4a6c8 - 0xffff8509`6a18b4c8 ]
   +0x458 RundownProtect   : _EX_RUNDOWN_REF
   +0x460 Flags2           : 0xd094
   +0x460 JobNotReallyActive : 0y0
   +0x460 AccountingFolded : 0y0
   +0x460 NewProcessReported : 0y1
   +0x460 ExitProcessReported : 0y0
   +0x460 ReportCommitChanges : 0y1
   +0x460 LastReportMemory : 0y0
   +0x460 ForceWakeCharge  : 0y0
   +0x460 CrossSessionCreate : 0y1
   +0x460 NeedsHandleRundown : 0y0
   +0x460 RefTraceEnabled  : 0y0
....
	+0x5a8 ImageFileName    : [15]  "RuntimeBroker."   ***只能显示十五字节的进程名***
   +0x5b7 PriorityClass    : 0x2 ''
   +0x5b8 SecurityPort     : (null) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值