[发明专利]一种用于枚举系统进程的方法及装置有效
申请号: | 201210362962.2 | 申请日: | 2012-09-25 |
公开(公告)号: | CN102945346A | 公开(公告)日: | 2013-02-27 |
发明(设计)人: | 张辉;陈擎月 | 申请(专利权)人: | 北京奇虎科技有限公司;奇智软件(北京)有限公司 |
主分类号: | G06F21/56 | 分类号: | G06F21/56 |
代理公司: | 北京市德权律师事务所 11302 | 代理人: | 刘杰 |
地址: | 100088 北京市西城区新*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 用于 枚举 系统 进程 方法 装置 | ||
技术领域
本发明涉及计算机技术领域,特别是涉及一种用于枚举系统进程的方法。本发明还涉及一种用于枚举系统进程的装置。
背景技术
Windows任务管理器可以枚举出系统当前的进程,并能够根据需要选择终止进程。为管理系统进程提供了很大的便利。
Windows任务管理器枚举系统当前进程是通过其Native API函数ZwQuerySystemInfomation来操作进程活动链表来实现的。具体的过程如下:
首先,获取当前任一进程的指针,例如可以通过PsGetCurrentProcess()来获取当前进程的PEPROCESS指针。
然后定位到记录该当前进程与其它进程链接信息的Activelist处,具体的操作方式为ActiveList=pCurrentEprocess+0x88,即当前进程指针移动一定的步长。其中0x88为winxp sp3下Activelist与pCurrentEprocess的步长,在不同win操作系统时该步长并不相同。
接着,以所定位的当前进程的Activelist遍历整个进程活动链表(Activelistlink)上每一进程的数据结构,即可获得当前的存在于进程活动链表的所有进程。
如上所述,因为windows任务管理器是基于ZwQuerySystemInformation来实现的,所以如果将进程对象从进程活动链表中移除,那么调用NtQuerySystemInfomation来枚举进程的任务管理器TaskMgr.exe中就不会看到目标进程了。同时,Windows的任务调度分配器使用的另一的数据结构,也就是说,进程是否被调度执行与进程活动链表无关,不会因为从进程活动链表删除就被CPU忽略,因此进程仍然会被执行。这很容易被一些恶意软件或者RootKit程序利用,在进程活动链表上不显示其存在,但是仍然被执行,这可能导致用户的计算机在不知不觉中被感染病毒、植入木马或者窃取了信息,对计算机造成潜在的或现实的威胁。因而有必要能够查找出这种被进程活动链表忽略而实质上又在被执行的隐藏进程。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的用于枚举系统进程的方法和相应的用于枚举系统进程的装置。
依据本发明的一个方面,提供了一种用于枚举系统进程的方法,包括:
获取当前进程的私有句柄表;
遍历该当前进程的私有句柄表与其它进程的私有句柄表形成的句柄表链,获得其它进程私有句柄表;
根据所述获得的其它进程的私有句柄表,获取每一私有句柄表所对应的进程;
集合所获得的所有进程,形成系统进程集合。
可选的,所述获取该当前进程的私有句柄表包括:
获取指向当前进程的指针;
由所述当前进程的指针偏移获得当前进程的私有句柄表指针;
根据所述当前进程的私有句柄表指针定位到该当前进程的私有句柄表。
可选的,所述获取指向当前进程的指针包括:
通过PsGetCurrentProcess()或IoGetCurrentProcess()获得当前进程的指针。
可选的,所述由所述当前进程的指针偏移获得当前进程的私有句柄表指针的步骤中,偏移的步长由win系统版本决定。
可选的,所述遍历该当前进程的私有句柄表与其它进程的私有句柄表形成的句柄表链,获得其它进程私有句柄表包括:
记录所述当前进程的私有句柄表的地址;
由该当前进程的私有句柄表指针偏移获取私有句柄表链上相邻进程的私有句柄表;
判断偏移后进程的私有句柄表地址是否与记录的当前进程的私有句柄表的地址相同;若是,终止遍历;
若否,按照与前述偏移相同的方向继续执行指针偏移获取私有句柄表链上的其它进程私有句柄表;直到偏移后获得进程私有句柄表地址与记录的当前进程私有句柄表的地址相同为止。
可选的,所述偏移的步长根据win系统的版本而确定。
可选的,还包括:对于所述获得系统的进程中的至少一个进程,按照该进程所在的SessionProcessLinks链表再做遍历,并将获得的进程表与所述获得系统的进程集合合并。
可选的,还包括:对于所述获得系统的进程中的至少一个进程,按照该进程所在Vm.WorkingSetExpansionLinks链表再做遍历,并将获得的进程表与所述获得系统的进程集合合并。
可选的,还包括如下步骤:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京奇虎科技有限公司;奇智软件(北京)有限公司,未经北京奇虎科技有限公司;奇智软件(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210362962.2/2.html,转载请声明来源钻瓜专利网。