原文发表于百度空间,2009-04-04========================================================================== 在创建句柄时,操作过程并不受StrictFIFO标志的影响.而在销毁句柄时,StrictFIFO标志则决定了如何放置刚释放的这个FreeHandle.对于普通进程的句柄表而言,StrictFIFO为0,那么销毁该句柄时,Free指针所指向的队列头是HandleTable->FirstFree.此时这个新的Fr…
原文发表于百度空间,2009-04-04========================================================================== 分析了Windows句柄表的分配算法之后,综合WRK1.2中的代码以及Window XP下的实践,继续分析句柄的分配算法~~为了便于描述,先定义几个概念:FreeHandle即尚未被使用的Handle,FreeHandleList是由FreeHandle依靠HandleTableEntry->NextFree…
原文发表于百度空间,2009-03-30========================================================================== 阅读提示:由于继续使用了chichou同学的CodeHighlighter来修饰代码,造成文章字数过多,故分成三篇,且后两篇内容的顺序稍有调整,阅读时请根据大标题的顺序来~ 前置知识:Windows句柄表的基本结构本文以WRK1.2的代码为参考,主要分析Windows句柄表的分配算法,其实只要了解了句柄表的结…
原文发表于百度空间,2009-03-31========================================================================== 理论结合实践,这是我一贯的学习方法~~实验目的:以实验的方式观察PspCidTable的变化,从中了解Windows句柄表的分配过程.实验器材:Windbg,RunIt(一个可控的不断创建线程的程序),DebugView知识回顾: 如图所示,句柄表的结构根据TableLevel来确定:TableLevel为0…
原文发表于百度空间,2009-03-30========================================================================== 三.当需要申请一个新的二级表(MidLevelTable)时,调用ExpAllocateMidLevelTable函数 PHANDLE_TABLE_ENTRY * ExpAllocateMidLevelTable ( IN PHANDLE_TABLE HandleTable, IN BOOLEAN DoIni…
原文发表于百度空间,2009-03-29========================================================================== PspCidTable的攻与防,其实就是进程隐藏与检测所涉及到的一部分工作~~不管基于PspCidTable的进线程检测,还是抹PspCidTable进行进程对象的隐藏,都涉及到对PspCidTable的遍历.所以如何安全正确地遍历PspCidTable才是该技术的关键一.获取PspCidTable的地址常用…
原文发表于百度空间,2009-03-30========================================================================== 四.句柄表的扩容:已分配的句柄表被用完时,ExpAllocateHandleTableEntrySlow被调用以分配一个新的句柄表,实现对句柄表的扩容.每次增加粒度都是一个一级表的大小(大小为PAGE_SIZE,句柄容量为PAGE_SIZE/sizeof(HANDLE_TABLE_ENTRY)*HANDLE_…
原文发表于百度空间,2009-02-28========================================================================== 句柄是Windows对象管理中引入的一个东西,它的实际意义是对象在句柄表中的索引.Windows2000使用的是固定的三层句柄表,而WindowsXP和Windows2003都是使用的动态可扩展的三层句柄表,这是一种很优秀的结构,易扩展,且查找迅速,值得学习.通常情况下每个进程的句柄表都是一级表,当句柄数超过…
原文发表于百度空间,2010-08-01========================================================================== 今天花了一点时间把Windows对象管理的变化看了一下,重点放在了Win7这个新的系统上.事实上,在对象管理这一部分上,从XP.2003几乎没有什么变化,到Vista以后,对象的管理依然没有太大变化,只是内核多导出了几个与对象操作有关的函数而已.而到了Win7以后,在Vista的基础上变动则比较大,主要是体现…
原文发表于百度空间,2008-7-24========================================================================== 进程的相关结构非常重要,重点学习-有一些内容参考自:http://dev.csdn.net/article/20/20210.shtm 进程结构中,首推EPROCESS,标记一些重要成员(可能不全):lkd> dt _EPROCESSnt!_EPROCESS   +0x000 Pcb             …