首页
社区
课程
招聘
[原创]Windows句柄表分配算法分析 (实验部分)
发表于: 2009-3-29 14:43 6928

[原创]Windows句柄表分配算法分析 (实验部分)

2009-3-29 14:43
6928

本文是《Windows句柄表分配算法分析》的随文实验
回顾:
TableLevle=HandleTable->TableCode&3;
CapturedTable=HandleTable->TableCode&~3;
句柄表的结构根据TableLevel来确定:
TableLevel为0时,CapturedTable是一级表
TableLevel为1时,CapturedTable是二级表,CapturedTable[i]是一级表
TableLevel为2时,CapturedTable是三级表,CapturedTable[i]是二级表,CapturedTable[i][j]是一级表

三级表的内容是二级表指针,二级表的内容是一级表指针,一级表中放的才是对象及访问属性(HANDLE_TABLE_ETNRY结构)
实验目的:以实验的方式观察PspCidTable的变化,从中了解Windows句柄表的分配过程.
实验器材:Windbg,RunIt(一个可控的不断创建线程的程序,见附件)
准备工作:获取PspCidTable的基本信息

lkd> dd PspCidTable l1
8055a360  e1001810 //获取PspCidTable的地址
lkd> dt _HANDLE_TABLE e1001810
nt!_HANDLE_TABLE
   +0x000 TableCode        : 0xe1003000 //表基址为0xe1003000,一级表
   +0x004 QuotaProcess     : (null) 
   +0x008 UniqueProcessId  : (null) 
   +0x00c HandleTableLock  : [4] _EX_PUSH_LOCK
   +0x01c HandleTableList  : _LIST_ENTRY [ 0xe100182c - 0xe100182c ]
   +0x024 HandleContentionEvent : _EX_PUSH_LOCK
   +0x028 DebugInfo        : (null) 
   +0x02c ExtraInfoPages   : 0
   +0x030 FirstFree        : 0x308
   +0x034 LastFree         : 0x34c
   +0x038 NextHandleNeedingPool : 0x800  //当前的句柄上限
   +0x03c HandleCount      : 329
   +0x040 Flags            : 1
   +0x040 StrictFIFO       : 0y1
lkd> dd 0xe1003000
e1003000  00000000 fffffffe 821bb661 00000000
e1003010  821bb3e9 00000000 821ba021 00000000
e1003020  821bad21 00000000 821baaa9 00000000
e1003030  821ba831 00000000 821ba5b9 00000000
e1003040  821ba341 00000000 821b9021 00000000
e1003050  821b9da9 00000000 821b9b31 00000000
e1003060  821b98b9 00000000 821b9641 00000000
e1003070  821b93c9 00000000 821b8021 00000000

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (1)
雪    币: 7115
活跃值: (639)
能力值: (RANK:1290 )
在线值:
发帖
回帖
粉丝
2
  文章真细致
2009-3-29 20:01
0
游客
登录 | 注册 方可回帖
返回
//