原文发表于百度空间,2009-03-31========================================================================== 理论结合实践,这是我一贯的学习方法~~实验目的:以实验的方式观察PspCidTable的变化,从中了解Windows句柄表的分配过程.实验器材:Windbg,RunIt(一个可控的不断创建线程的程序),DebugView知识回顾: 如图所示,句柄表的结构根据TableLevel来确定:TableLevel为0…
原文发表于百度空间,2009-03-30========================================================================== 阅读提示:由于继续使用了chichou同学的CodeHighlighter来修饰代码,造成文章字数过多,故分成三篇,且后两篇内容的顺序稍有调整,阅读时请根据大标题的顺序来~ 前置知识:Windows句柄表的基本结构本文以WRK1.2的代码为参考,主要分析Windows句柄表的分配算法,其实只要了解了句柄表的结…
原文发表于百度空间,2009-03-30========================================================================== 三.当需要申请一个新的二级表(MidLevelTable)时,调用ExpAllocateMidLevelTable函数 PHANDLE_TABLE_ENTRY * ExpAllocateMidLevelTable ( IN PHANDLE_TABLE HandleTable, IN BOOLEAN DoIni…
原文发表于百度空间,2009-03-30========================================================================== 四.句柄表的扩容:已分配的句柄表被用完时,ExpAllocateHandleTableEntrySlow被调用以分配一个新的句柄表,实现对句柄表的扩容.每次增加粒度都是一个一级表的大小(大小为PAGE_SIZE,句柄容量为PAGE_SIZE/sizeof(HANDLE_TABLE_ENTRY)*HANDLE_…
原文发表于百度空间,2009-04-04========================================================================== 分析了Windows句柄表的分配算法之后,综合WRK1.2中的代码以及Window XP下的实践,继续分析句柄的分配算法~~为了便于描述,先定义几个概念:FreeHandle即尚未被使用的Handle,FreeHandleList是由FreeHandle依靠HandleTableEntry->NextFree…
原文发表于百度空间,2009-04-04========================================================================== 在创建句柄时,操作过程并不受StrictFIFO标志的影响.而在销毁句柄时,StrictFIFO标志则决定了如何放置刚释放的这个FreeHandle.对于普通进程的句柄表而言,StrictFIFO为0,那么销毁该句柄时,Free指针所指向的队列头是HandleTable->FirstFree.此时这个新的Fr…
原文发表于百度空间,2009-02-28========================================================================== 句柄是Windows对象管理中引入的一个东西,它的实际意义是对象在句柄表中的索引.Windows2000使用的是固定的三层句柄表,而WindowsXP和Windows2003都是使用的动态可扩展的三层句柄表,这是一种很优秀的结构,易扩展,且查找迅速,值得学习.通常情况下每个进程的句柄表都是一级表,当句柄数超过…
原文发表于百度空间,2008-7-24========================================================================== 进程的相关结构非常重要,重点学习-有一些内容参考自:http://dev.csdn.net/article/20/20210.shtm 进程结构中,首推EPROCESS,标记一些重要成员(可能不全):lkd> dt _EPROCESSnt!_EPROCESS   +0x000 Pcb             …
原文发表于百度空间及看雪论坛,2009-02-27 看雪论坛地址:https://bbs.pediy.com/thread-82919.htm========================================================================== PspCidTable现在已经很科普了,关于其具体格式及如何枚举,网上相关文章一大堆,最多的两篇是gz1x和sudami写的.我这里只谈一个问题,就是枚举PspCidTable时cid的上限问题.很多人提到以…
原文发表于百度空间及看雪论坛,2010-09-12 看雪论坛地址:https://bbs.pediy.com/thread-120296.htm========================================================================== Win7的内核新增了一系列带有Tag参数的对象增加引用(Refrence)/减少引用(Derefrence)函数,更易于找出对象使用中的“泄漏”(即Refrence和Derefrence次数不匹配). 在W…