【技术实现步骤摘要】
一种用于枚举系统进程的方法及装置
本专利技术涉及计算机
,特别是涉及一种用于枚举系统进程的方法。本专利技术还涉及一种用于枚举系统进程的装置。
技术介绍
Windows任务管理器可以枚举出系统当前的进程,并能够根据需要选择终止进程。为管理系统进程提供了很大的便利。Windows任务管理器枚举系统当前进程是通过其NativeAPI函数ZwQuerySystemInfomation来操作进程活动链表来实现的。具体的过程如下:首先,获取当前任一进程的指针,例如可以通过PsGetCurrentProcess()来获取当前进程的PEPROCESS指针。然后定位到记录该当前进程与其它进程链接信息的Activelist处,具体的操作方式为ActiveList=pCurrentEprocess+0x88,即当前进程指针移动一定的步长。其中0x88为winxpsp3下Activelist与pCurrentEprocess的步长,在不同win操作系统时该步长并不相同。接着,以所定位的当前进程的Activelist遍历整个进程活动链表(Activelistlink)上每一进程的数据结构,即可获得当前的存在于进程活动链表的所有进程。如上所述,因为windows任务管理器是基于ZwQuerySystemInformation来实现的,所以如果将进程对象从进程活动链表中移除,那么调用NtQuerySystemInfomation来枚举进程的任务管理器TaskMgr.exe中就不会看到目标进程了。同时,Windows的任务调度分配器使用的另一的数据结构,也就是说,进程是否被调度执行 ...
【技术保护点】
一种用于枚举系统进程的方法,其特征在于,包括:获取System进程的EPROCESS结构;以Mmsystem?range?start地址为起始点并以所述EPROCESS的长度作为步长遍历Mmsystem?range?start地址至所述System进程的EPROCESS结构之间的内存空间,获取每一步长对应的内存地址段中的内容;所述每一步长对应的内存地址段中,对于起始地址为有效地址的内存地址段,判断该内存地址段中的内容是否为合法的进程;若是,则记录该进程;若否,则忽略该内存地址段;集合所获得的所有合法进程,形成系统进程集合。
【技术特征摘要】
1.一种用于枚举系统进程的方法,其特征在于,包括:获取System进程的EPROCESS结构;以Mmsystemrangestart地址为起始点并以所述EPROCESS的长度作为步长遍历Mmsystemrangestart地址至所述System进程的EPROCESS结构之间的内存空间,获取每一步长对应的内存地址段中的内容;所述每一步长对应的内存地址段中,对于起始地址为有效地址的内存地址段,判断该内存地址段中的内容是否为进程;若是,则判断该内存地址段中的内容是否为合法的进程;若是,则记录该进程;若否,则忽略该内存地址段;集合所获得的所有合法进程,形成系统进程集合;其中,所述方法还包括:将获取的进程集合与Windows任务管理器的进程表比对;找出不同于Windows任务管理器的进程表中的进程;以所述找出的进程作为内容向用户发送或者向用户发送提示消息或报警;其中,所述判断该内存地址段中的内容是否为进程包括:将内存地址段中的内容赋值给EPROCESS结构;判断被赋值的EPROCESS结构的成员变量ExitTime的值是否为零;判断被赋值的EPROCESS结构的成员变量_bject_type的类型值是否为process;若上述两个成员变量均为是,则内存地址段中的内容为进程,否则不为进程。2.根据权利要求1所述的用于枚举系统进程的方法,其特征在于,所述获取System进程EPROCESS结构包括:在驱动加载的入口函数中调用函数PsGetCurrentProcess()获得System进程的EPROCESS结构。3.根据权利要求2所述的用于枚举系统进程的方法,其特征在于,所述判断被赋值的EPROCESS结构的成员变量ExitTime的值是否为零包括:由被赋值的EPROCESS结构首地址偏移0x78,获得成员变量ExitTime;提取所述成员变量ExitTime的值;判断所述成员变量ExitTime的值是否等于零。4.根据权利要求2所述的用于枚举系统进程的方法,其特征在于,所述判断被赋值的EPROCESS结构的成员变量_bject_type的类型值是否为process包括:由被赋值的EPROCESS结构首地址偏移0x8,获得成员变量_bject_type;由所述成员变量_bject_type的首地址偏移0x40,获得成员type;提取所述成员type的值;判断所述成员type的值是否等于process。5.根据权利要求2至4任一所述的用于枚举系统进程的方法,其特征在于,所述判断该内存地址段中的内容是否为合法的进程包括:获取当前进程的EPROCESS;获取该当前进程的EPROCESS的进程环境块地址;若所述进程环境块地址为零,则返回到所述获取当前进程的EPROCESS的步骤,或者通过遍历私有句柄表链或活动进程表链获得其它任一进程,获取该任一进程的EPROCESS的进程环境块地址并判断该地址是否为零;若非零,则提取所述进程环境块地址高四位的值作为参考值;获取所述内存地址段中由起始地址偏移1B0处的内容的高四位,作为待检值;判断所述待检值是否与参考值相同;若相同,则内存地址段中的内容为合法的进程,否则为不合法进程。6.根据权利要求5所述的用于枚举系统进程的方法,其特征在于,所述获取当前进程的EPROCESS包括:通过PsGetCurrentProcess()获得当前的进程的EPROCESS。7.根据权利要求5所述的用于枚举系统进程的方法,其特征在于,所述获取该当前进程的EPROCESS的进程环境块地址包括:由该当前进程的EPROCESS首地址偏移1B0获取其进程环境块成员变量;提取所述进程环境块成员变量的值。8...
【专利技术属性】
技术研发人员:张辉,
申请(专利权)人:北京奇虎科技有限公司,奇智软件北京有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。