• 919阅读
  • 1回复

关于PspCidTable [复制链接]

上一主题 下一主题
在线啊冲
 

只看楼主 倒序阅读 使用道具 楼主  发表于: 2016-02-04




PspCidTable为一个全局变量,其格式与普通的句柄表是完全一样的.但它与每个进程私有的句柄表有以下不同:
1.PspCidTable中存放的对象是系统中所有的进线程对象指针,其索引就是PIDCID 2.PspCidTable中存放是对象体(指向EPROCESSETHREAD),而每个进程私有的句柄表则存放的是对象头(OBJECT_HEADER)
3.PspCidTable是一个独立的句柄表,而每个进程私有的句柄表以一个双链连接起来
如何寻找PspCidTable1.PspCidTable没有导出,通常的方法是找特征码:PsLookUpProcessByProcessId
2另一种方法是从KPCR====>KdVersionBlock
首先还是先看一下PspCidTable
[cpp] view plain copy
  1. kd> dd pspcidtable  
  2. 84198f34  8b801100 00000000 80000020 00000101  
  3. 84198f44  80000330 80000024 00000000 00000000  
  4. 84198f54  00000000 00000000 00000000 00000113  
  5. 84198f64  00000000 00000000 8414935a 00000000  
  6. 84198f74  00000000 00000000 00000000 00000008  
  7. 84198f84  00000000 84198f88 84198f88 00000000  
  8. 84198f94  00000000 00000000 00000000 00000000  
  9. 84198fa4  00000000 807ccc38 807c8c38 00000000  

8b801100 便是_HANDLE_TABLE
[cpp] view plain copy
  1.   
  2. kd> dt _handle_table 8b801100  
  3. nt!_HANDLE_TABLE  
  4.    +0x000 TableCode        : 0x9bd25001  
  5.    +0x004 QuotaProcess     : (null)  
  6.    +0x008 UniqueProcessId  : (null)  
  7.    +0x00c HandleLock       : _EX_PUSH_LOCK  
  8.    +0x010 HandleTableList  : _LIST_ENTRY [ 0x8b801110 - 0x8b801110 ]  
  9.    +0x018 HandleContentionEvent : _EX_PUSH_LOCK  
  10.    +0x01c DebugInfo        : (null)  
  11.    +0x020 ExtraInfoPages   : 0n0  
  12.    +0x024 Flags            : 1  
  13.    +0x024 StrictFIFO       : 0y1  
  14.    +0x028 FirstFreeHandle  : 0x11c  
  15.    +0x02c LastFreeHandleEntry : 0x9bd26740 _HANDLE_TABLE_ENTRY  
  16.    +0x030 HandleCount      : 0x31f  
  17.    +0x034 NextHandleNeedingPool : 0x1000  
  18.    +0x038 HandleCountHighWatermark : 0x32f  


之后句柄表   +0x000 TableCode        : 0x9bd25001可以看到这是一张二级表:

[cpp] view plain copy
  1.   
  2. kd> dd 0x9bd25000  
  3. 9bd25000  8b804000 9bd26000 00000000 00000000  
  4. 9bd25010  00000000 00000000 00000000 00000000  
  5. 9bd25020  00000000 00000000 00000000 00000000  
  6. 9bd25030  00000000 00000000 00000000 00000000  
  7. 9bd25040  00000000 00000000 00000000 00000000  
  8. 9bd25050  00000000 00000000 00000000 00000000  
  9. 9bd25060  00000000 00000000 00000000 00000000  
  10. 9bd25070  00000000 00000000 00000000 00000000  


查看一级表的内容:

[cpp] view plain copy
  1.   
  2. kd> dd 8b804000  
  3. 8b804000  00000000 fffffffe 869dd8e9 00000000  
  4. 8b804010  869dd611 00000000 869fcc81 00000000  
  5. 8b804020  86a00c81 00000000 86a009a9 00000000  
  6. 8b804030  86a08021 00000000 86a08919 00000000  
  7. 8b804040  86a08641 00000000 86a08369 00000000  
  8. 8b804050  86a04d49 00000000 86a04a71 00000000  
  9. 8b804060  86a04799 00000000 86a044c1 00000000  
  10. 8b804070  869f9021 00000000 869f9d49 00000000  


由于 PspCidTable中存放是对象体(指向EPROCESSETHREAD)869dd8e9 抹去后三位便是指向 System _EPROCESS的指针:
抹去后三位是869dd8e8

[cpp] view plain copy
  1.   
  2. kd> !process 0 0 system  
  3. PROCESS 869dd8e8  SessionId: none  Cid: 0004    Peb: 00000000  ParentCid: 0000  
  4.     DirBase: 00185000  ObjectTable: 8b801b80  HandleCount: 648.  
  5.     Image: System  

验证正确!
善者 慈悲心常在 无怨无恨 以苦为乐
默认压缩密码www.hifyl.com
文件分享密码问题:http://www.hifyl.com/read-htm-tid-4444.html
离线v2680267313

只看该作者 沙发  发表于: 2016-04-30
用户被禁言,该主题自动屏蔽!
快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个