原文发表于百度空间,2010-08-11========================================================================== 对Windows对象管理有一定了解的人都知道,在固定对象头(OBJECT_HEADER)前面是一块可变区域,称为可变对象头,它所包含的结构内容并不固定.在Win7之前,可变区域实际有哪些结构,通常是由OBJECT_HEADER中的几个偏移值指出.如下: lkd> dt _OBJECT_HEADER(WinXP…
原文发表于百度空间,2010-08-09========================================================================== 在Windows系统的对象管理中,为了能够从对象头获取对象类型指针,在Win7以前的系统里直接在OBJECT_HEADER里保存了POBJECT_TYPE指针,而这一点在Win7系统里发生了改变.Win7中把所有的对象类型放在了一个表里,这个表叫做ObTypeIndexTable.这个表可以这么定义:POBJ…
原文发表于百度空间,2010-08-01========================================================================== 今天花了一点时间把Windows对象管理的变化看了一下,重点放在了Win7这个新的系统上.事实上,在对象管理这一部分上,从XP.2003几乎没有什么变化,到Vista以后,对象的管理依然没有太大变化,只是内核多导出了几个与对象操作有关的函数而已.而到了Win7以后,在Vista的基础上变动则比较大,主要是体现…
原文发表于百度空间及看雪论坛,2010-09-12 看雪论坛地址:https://bbs.pediy.com/thread-120296.htm========================================================================== Win7的内核新增了一系列带有Tag参数的对象增加引用(Refrence)/减少引用(Derefrence)函数,更易于找出对象使用中的“泄漏”(即Refrence和Derefrence次数不匹配). 在W…
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 感觉什么都不会,从哪开始呀! 这是最近我总能被问到的问题,也确实是.一个初入编程职场的新人,或是一个想重新努力学习的老司机,这也不会,那也不会,总会犯愁从哪开始. 讲道理,毕竟 Java 涉及的知识太多了,要学应该是学会学习的能力,而不是去背题.背答案,拾人牙慧是不会有太多收益的. 学习的过程要找对方法,遇到问题时最好能自己想想,你有哪些方式学会这些知识.是不感觉即使让你去百度搜,…
原文发表于百度空间,2009-02-28========================================================================== 句柄是Windows对象管理中引入的一个东西,它的实际意义是对象在句柄表中的索引.Windows2000使用的是固定的三层句柄表,而WindowsXP和Windows2003都是使用的动态可扩展的三层句柄表,这是一种很优秀的结构,易扩展,且查找迅速,值得学习.通常情况下每个进程的句柄表都是一级表,当句柄数超过…
原文发表于百度空间,2009-03-28========================================================================== PspCidTable也是一个句柄表,其格式与普通的句柄表是完全一样的.但它与每个进程私有的句柄表有以下不同:1.PspCidTable中存放的对象是系统中所有的进线程对象,其索引就是PID和TID2.PspCidTable中存放的直接是对象体(EPROCESS和ETHREAD),而每个进程私有的句柄表则存放…
原文发表于百度空间,2010-04-05========================================================================== 这也许是我这个假期唯一做的跟Code有关的事了,已经一个多月没写代码了~~问题是这样的,某同学A,在自己的工程中使用了PsVoid的部分驱动源码(感谢炉子开源~~),提到里面的IrpCreateFile函数在Win7下始终会蓝屏,希望我能帮忙解决一下.于是,拿出调试器开始debug之旅~~先简单介绍下,Irp…
原文发表于百度空间,2008-7-23========================================================================== 继续学习,继续补充... 事件:lkd> dt _KEVENTntdll!_KEVENT   +0x000 Header           : _DISPATCHER_HEADER 信号量:lkd> dt _KSEMAPHOREntdll!_KSEMAPHORE   +0x000 Header       …
原文发表于百度空间及看雪论坛,2009-10-14 看雪论坛地址:https://bbs.pediy.com/thread-99460.htm 刚发这篇文章的时候,因为内容涉及360的核心产品,文章被雪藏了一段时间========================================================================== Author:achillisblog :https://www.cnblogs.com/achillis/ 上一篇的分析中漏掉了三个函…
原文发表于百度空间,2009-09-17========================================================================== 相当老的话题,大约一年前就写过这个东西了,不过那时候知识比较有限,也不了解内核,因此实现得很粗浅,现在再写一下,权当是对这个老问题的总结吧.先谈谈正规DLL的隐藏方法,这里说的正规DLL,是指用LoadLibrary以正常方式加载的DLL.一.从PEB的Ldr链中消失这个很简单,看雪上NetRoc有一篇关于这…
原文发表于百度空间,2009-03-31========================================================================== 理论结合实践,这是我一贯的学习方法~~实验目的:以实验的方式观察PspCidTable的变化,从中了解Windows句柄表的分配过程.实验器材:Windbg,RunIt(一个可控的不断创建线程的程序),DebugView知识回顾: 如图所示,句柄表的结构根据TableLevel来确定:TableLevel为0…
原文发表于百度空间,2009-03-30========================================================================== 阅读提示:由于继续使用了chichou同学的CodeHighlighter来修饰代码,造成文章字数过多,故分成三篇,且后两篇内容的顺序稍有调整,阅读时请根据大标题的顺序来~ 前置知识:Windows句柄表的基本结构本文以WRK1.2的代码为参考,主要分析Windows句柄表的分配算法,其实只要了解了句柄表的结…
原文发表于百度空间,2009-01-09========================================================================== 今天又想起来VirtualKD这个东西,试用了一下,真是爽坏了,可能我火星了~~ 很久以前就知道小喂有个VmKd工具,使用Vmware的后门指令直接拷贝数据来代替模拟串口,能大大提高调试时的数据传输速度.不过那个对VMware版本的依赖性太强,我的Vmware就没法用,所以很不爽得又放下了,很长一段时间也没关…
原文发表于百度空间,2008-10-4看雪论坛发表地址:https://bbs.pediy.com/thread-73948.htm========================================================================== 这篇文章是在Servex.exe专杀工具写完之后的一些小小感想,关于PE感染和修复,大牛飘过~ 自某日不小心中了Serverx.exe病毒,电脑中大部分EXE文件被感染,系统盘system32目录下的病毒文件Serve…
原文发表于百度空间,2009-07-14========================================================================== 标准的驱动与ring3的通信过程是这样的:驱动中创建设备,并为设备创建符号链接,ring3用CreateFile打开符号链接得到设备句柄,然后DeviceIoControl发送ControlCodeDeviceIoControl的内容被封装成IRP到达Device,Device其所属Driver的对应派遣例程…
原文发表于百度空间,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-29========================================================================== PspCidTable的攻与防,其实就是进程隐藏与检测所涉及到的一部分工作~~不管基于PspCidTable的进线程检测,还是抹PspCidTable进行进程对象的隐藏,都涉及到对PspCidTable的遍历.所以如何安全正确地遍历PspCidTable才是该技术的关键一.获取PspCidTable的地址常用…
原文发表于百度空间及看雪论坛,2009-02-27 看雪论坛地址:https://bbs.pediy.com/thread-82919.htm========================================================================== PspCidTable现在已经很科普了,关于其具体格式及如何枚举,网上相关文章一大堆,最多的两篇是gz1x和sudami写的.我这里只谈一个问题,就是枚举PspCidTable时cid的上限问题.很多人提到以…
原文发表于百度空间,2009-01-09========================================================================== 这一节的内容是Windbg入门,用一些基本的命令告诉你如何使用Windbg~~仅作入门,更详细的可以参考Raymond老师的<软件调试>的第30章---"WinDbg用法详解"和Windbg自带的帮助文件 我使用调试器的经验完全来自于Ring3的Ollydbg,所以我在初用Windbg时…
原文发表于百度空间,2009-01-08========================================================================== 这一篇是主要是关于Vmware部分的设置,其实参考JIURL那篇很经典的<借助VMware实现单机使用WinDbg>就可以了.不过那篇文章里面有个小错误(不知道是原作者不小心,还是别人转载的时候错了),后面的波特率应为115200而非11520我就再来写一下吧,内容基本雷同,稍微精简一些 Vmware的相关…
原文发表于百度空间,2008-12-03========================================================================== 今天写程序,用ZwQuerySystemInformation枚举系统中的文件句柄时出了问题,死活一个都找不到,可是这明显不可能啊?于是用Process Explorer随便找了个文件句柄对象,然后看了它的OBJECT_TYPE,才发现文件句柄的类型索引应为28,而我用的是炉子给的那个SYSTEM_HANDL…
原文发表于百度空间,2008-11-02========================================================================== 先定义一下用到的几个变量:char *hModule=NULL;//映射后的基址PIMAGE_OPTIONAL_HEADER pOptHeader;//扩展头PIMAGE_DATA_DIRECTORY pRelocTable=NULL;//指向重定位表PIMAGE_BASE_RELOCATION pReloc…
原文发表于百度空间,2008-7-28========================================================================== 前面介绍了修改PEB中已加载模块的双链,来隐藏指定的模块.不过要对付这样隐藏,一个暴力搜索内存就够了. 实现思路如下:地址以一个页的大小为单位从0x00000000到0x7FFFFFFF遍历,检查是否具有PE特征.页的大小可以通过GetSystemInfo()得到,结果在SYSTEM_INFO结构的DWORD…
原文发表于百度空间,2008-7-24========================================================================== 进程的相关结构非常重要,重点学习-有一些内容参考自:http://dev.csdn.net/article/20/20210.shtm 进程结构中,首推EPROCESS,标记一些重要成员(可能不全):lkd> dt _EPROCESSnt!_EPROCESS   +0x000 Pcb             …
原文发表于百度空间,2008-7-23 ========================================================================== 学内核从基本数据结构开始吧,就像学C语言时从学习int,char开始一样.只列出目前见到和用到的,其它后面再补充- 常用数据结构: 数字:lkd> dt _ULARGE_INTEGERntdll!_ULARGE_INTEGER   +0x000 LowPart          : Uint4B   +0x0…
原文发表于百度空间,2010-09-07========================================================================== 本来只是打算以回复的形式回答一下m_sunv同学关于windbg搜索符号的问题,不料写得太多,超过了评论字数,索性就更详细一点单独写一篇文章来说明一下windbg查找符号文件的问题吧~ 以下所有说明以本人的符号目录设置为前提,我的符号目录设置是:_NT_SYMBOL_PATH=D:\MyLocalSymbol…
原文发表于百度空间,2010-01-02========================================================================== 玩过Shadow SSDT Hook的都知道,在System进程中是无法访问win32k.sys的内存空间的,要想访问必须切换到csrss进程或者任意一个GUI进程.问题一:为什么System进程里无法访问win32k.sys呢?某同学的说法,"在System进程和非GUI进程里,win32k.sys被页换出…
原文发表于百度空间及看雪论坛,2009-05-13 看雪论坛地址:https://bbs.pediy.com/thread-89708.htm========================================================================== 最近很忙,也很懒,发点以前写的东西吧~学习了一下古老的CsrssWalker,写点笔记~~在Csrss.exe中,保存着所有Win32子系统进程的进程信息,这些信息以链表的形式保存.正常情况下,每一个新创建的…