首页
社区
课程
招聘
[求助]关于句柄表的NextHandleNeedingPool 的疑问
发表于: 2009-3-1 01:12 5581

[求助]关于句柄表的NextHandleNeedingPool 的疑问

2009-3-1 01:12
5581
最近看FUTo,在抹句柄处发现一点问题,如下:

1. 网上找到的_HANDLE_TABLE结构的NextHandleNeedingPool 表示在分配下一层句柄表之前可以容纳的最大句柄数。问题在这,windbg里查看的csrss.exe(只有一层)的这个是0x800,我写的程序运行的XP页表大小是4K,也就是说一页容纳的最大句柄数是0x1000 / 8 = 0x200
相差了4倍,请问这个是为何?是否我哪里理解错了。。。我理解的TableCode 是指向一页的,当一页不够容纳所有的句柄才去分层,是否理解有误?

2. FUTo里这样遍历了句柄表让我很纳闷:
if (i_numTables == 0) // 只有一层的句柄
{
        p_tableEntry = (PTABLE_ENTRY)((DWORD)orig_tableEntry & 0xfffffff8);
        for (a = 0; a < i_hperPage; a++)
       {
                if (((p_tableEntry[a].object ^ 0x80000000) & 0xfffffff8) == ((DWORD)tarHandle - 0x18))
                {
                        p_tableEntry[a].object = 0;
                        p_tableEntry[a].security = 0;
               }
      }
}

这里有个问题是:如果句柄表后面有空的,那么应该会直接蓝屏吧?虽然这里在查找之前作者可以保证是一定能找到的,但是没有完善的处理感觉还是不负责的,只是个人看法。。
以下是图片


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 222
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
句柄是以4自增的

NextHandleNeedingPool表示在分配下一层句柄表之前可以容纳的最大句柄的值 而不是最大的句柄数
2009-3-1 02:01
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢了。。明白了。
2009-3-1 19:26
0
游客
登录 | 注册 方可回帖
返回