检测的方法同样也很简单,今天我们说的方法算是最稳定、最简单的在Ring0下检测隐藏进程的了,不需要牵扯到稍微复杂的
PspCidTable(进程句柄表),毕竟贺尘PspCidTable的结构对于每一个系统来说是不一样的,在Windows
2000中为两层表,到了XP以后就变成三层了;同时,它在每个系统中获得的地址也不一样,所以我们仍使用
ZwQuerySystemInformation来枚举。或许有人会说它只能枚举出Ring3中Hook EnumProcess或Hook
CreateToolhelp32Snapshot这样的Win32
API隐藏的进程。由于篇幅的问题,如何获取真实的SSDT(系统服务描述表)地址,我会在下一期中告诉大家通用的方法获取该值,所以大家不用担心无法检测到灰鸽子、PcShare木马。首先要说的是在驱动中分配内存的函数不再是new和delete,而是ExAllocatePool和
ExFreePool。如果系统进程过多,ZwQuerySystemInformation的调用可能会失败,本文采用一个循环重新分配缓冲区的大小,每次增加两倍的缓冲区大小,直到成芦埋功为止。文陪拍蚂中缓冲区的初始值大小为32KB,如果首次分配过多会导致SYSTEM内核进程内存占用过多,影响系统性能等问题,同时内核驱动为Unicode编码,这点需要大家注意。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)