一种进程处理方法及装置与流程

文档序号:14722464发布日期:2018-06-17 21:30阅读:148来源:国知局

本申请涉及计算机技术领域,特别涉及一种进程处理方法及装置。



背景技术:

随着互联网日益发展,用户终端上可能会存在各种各样的不安全因素,为此,用户通常会在其终端上安装各种安全防护客户端,以应对各种不安全因素。实际应用中,上述各种安全防护客户端通常能够保证用户终端的安全性,然而,由于各种因素安全防护客户端所运行的进程可能会非法退出。

上述进程的非法退出有可能是由以下因素造成的:

病毒木马为了自身存活有可能会结束安全防护客户端所运行的进程;

各个安全防护客户端可能为了提高自身的活跃度,结束其它安全防护客户端所运行的进程。

由以上可见,对于单一一款安全防护客户端而言,需防止非法退出其所运行的进程,以保证用户终端安全或者保持其在用户终端中的活跃度。



技术实现要素:

本申请实施例公开了一种进程处理方法及装置,以防止客户端所运行的进程非法退出。

为达到上述目的,本申请实施例公开了一种进程处理方法,所述方法包括:

监测是否接收到针对目标进程的目标内存分配指令,其中,所述目标进程为用于运行目标客户端的进程;

若接收到,判断所述目标内存分配指令是否为所述目标客户端发起的;

若为否,拒绝在所述目标进程上分配内存资源,以使得其它客户端无法获得用于存储非法代码的内存资源,进而退出所述目标进程失败,其中,所述非法代码为用于退出所述目标进程的代码。

在本申请的一种具体实现方式中,所述监测是否接收到针对目标进程的目标内存分配指令,包括:

监测是否接收到内存分配指令;

若监测到,通过调用预设挂钩函数的方式,判断监测到的内存分配指令是否为针对目标进程的内存分配指令;

若为是,则判定接收到了针对所述目标进程的目标内存分配指令。

在本申请的一种具体实现方式中,所述预设挂钩函数为针对预设的对象指针获得函数的挂钩函数,其中,所述预设的对象指针获得函数为用于获得进程对象指针的函数。

在本申请的一种具体实现方式中,在所述通过调用预设挂钩函数的方式,判断监测到的内存分配指令是否为针对目标进程的内存分配指令之前,还包括:

保存所述预设的对象指针获得函数的函数地址;

在判断得所述目标内存分配指令是所述目标客户端发起的情况下,通过所述预设的挂钩函数以及所述函数地址,在所述目标进程上分配内存资源。

在本申请的一种具体实现方式中,所述预设挂钩函数为针对预设的内存分配函数的挂钩函数,其中,所述预设的内存分配函数为用于在进程上分配内存资源的函数。

为达到上述目的,本申请实施例公开了一种进程处理装置,所述装置包括:

内存分配指令监测模块,用于监测是否接收到针对目标进程的目标内存分配指令,其中,所述目标进程为用于运行目标客户端的进程;

内存分配指令发起判断模块,用于在所述内存分配指令监测模块的监测结果为是的情况下,判断所述目标内存分配指令是否为所述目标客户端发起的;

资源分配拒绝模块,用于在所述内存分配指令发起判断模块的判断结果为否的情况下,拒绝在所述目标进程上分配内存资源,以使得其它客户端无法获得用于存储非法代码的内存资源,进而退出所述目标进程失败,其中,所述非法代码为用于退出所述目标进程的代码。

在本申请的一种具体实现方式中,所述内存分配指令监测模块,包括:

内存分配指令监测子模块,用于监测是否接收到内存分配指令;

内存分配指令判断子模块,用于在所述内存分配指令监测子模块的监测结果为是的情况下,通过调用预设挂钩函数的方式,判断监测到的内存分配指令是否为针对目标进程的内存分配指令;

内存分配指令判定子模块,用于所述内存分配指令判断子模块的判断结果为是的情况下,判定接收到了针对所述目标进程的目标内存分配指令。

在本申请的一种具体实现方式中,所述预设挂钩函数为针对预设的对象指针获得函数的挂钩函数,其中,所述预设的对象指针获得函数为用于获得进程对象指针的函数。

在本申请的一种具体实现方式中,所述进程处理装置还包括:

函数地址保存模块,用于在所述内存分配指令判断子模块判断内存分配指令之前,保存所述预设的对象指针获得函数的函数地址;

内存资源分配模块,用于在判断得所述目标内存分配指令是所述目标客户端发起的情况下,通过所述预设的挂钩函数以及所述函数地址,在所述目标进程上分配内存资源。

在本申请的一种具体实现方式中,所述预设挂钩函数为针对预设的内存分配函数的挂钩函数,其中,所述预设的内存分配函数为用于在进程上分配内存资源的函数。

由以上可见,本申请实施例提供的方案中,在监测到针对目标客户端所运行的目标进程的内存分配指令后,若判断得知该内存分配指令不是目标客户端发起的,则可以认为上述内存分配指令为非法内存分配指令,进而拒绝在目标进程上分配内存资源。由于拒绝分配内存资源,其它客户端无法获得用于存储退出目标进程的非法代码的内存资源,进一步的也就无法执行用于退出目标进程的非法代码,因而,能够有效防止非法退出目标进程。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的一种程序代码;

图2为本申请实施例提供的一种进程处理方法的流程示意图;

图3为本申请实施例提供的另一种程序代码;

图4为本申请实施例提供的一种进程处理装置的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

鉴于现有技术中存在非法退出客户端所运行进程的情况,本申请实施例提供了一种进程处理方法及装置。下面先就本申请所提供的“进程处理方法及装置”的提出背景进行介绍。

首先,本申请中涉及的“非法”可以理解为非目标进程本身所希望执行的操作,即简单的可以理解为“恶意”,例如,“非法退出”,可以理解为:非目标进程本身希望退出该进程,而且由于其它原因造成的进程退出,可以称之为“恶意退出”。

申请人经过大量分析发现,非法退出进程的代码具有一定相似性,参见图1,为本申请实施例提供的一种程序代码。

从上述程序代码可以看出,结束目标客户端所运行的目标进程的过程如下:

打开目标进程并获得该进程的进程句柄,通过上述进程句柄,调用AllocateVirtualMemory函数在目标进程上分配内存资源,然后在所分配的内存资源中写入用于退出目标进程的非法代码,再调用KeInsertQueueApc函数,执行上述非法代码,进而退出目标进程。

对于上述各个步骤而言可以理解为是串行执行的,只要一个步骤没有完成后面的步骤则没有办法继续,因为,要防止非法退出目标进程,则可以考虑使得上述各个步骤中的一个步骤执行失败,进而使得整个过程失败,例如,本申请实施例提供的方案中,使得分配内存资源的步骤执行失败等等。

需要说明的是,本申请实施例提供的方案中,各个步骤的执行主体可以是目标客户端,还可以是用于监控目标客户端是否可能被恶意操作的客户端等等,本申请并不对此进行限定。

图2为本申请实施例提供的一种进程处理方法的流程示意图,该方法包括:

S201:监测是否接收到针对目标进程的目标内存分配指令,若接收到,执行S202。

其中,目标进程为用于运行目标客户端的进程。

在本申请的一种可选实现方式中,监测是否接收到针对目标进程的目标内存分配指令时,可以先监测是否接收到内存分配指令,若监测到,通过调用预设挂钩函数的方式,判断监测到的内存分配指令是否为针对目标进程的内存分配指令,若为是,则判定接收到了针对目标进程的目标内存分配指令。

可选的,上述预设挂钩函数为针对预设的内存分配函数的挂钩函数,其中,预设的内存分配函数为用于在进程上分配内存资源的函数。

具体的,挂钩,也称APIHOOK,指函数挂钩,作用是对函数做扩展功能处理,可以实现函数的跳转,思路就是修改原函数的入口,使其进入跳转到我们的假函数入口,在假的跳转函数里可以做拦截等扩展功能。

在本申请的一种可选实现方式中,上述预设的内存分配函数可以是NtAllocateVirtualMemory函数等等。需要说明的是,本申请只是以上述为例进行说明,实际应用中预设的内存分配函数的具体形式可能与操作系统的具体类型、版本号等等相关。

另外,本领域内的技术人员可以理解的是,在分配内存资源的过程中,首先需要获得目标进程的对象指针,也可以理解为获得目标进程的进程标识,然后根据上述对象指针或者进程标识在目标进程上分配用于存储退出目标进程的非法代码的内存资源。

假设,实际应用中通过函数NtAllocateVirtualMemory在目标进程上分配内存资源,这种情况下需要通过调用函数ObReferenceObjectByHandle获得目标进程的对象指针或者称为进程标识,具体的,参见图3,图3为本申请实施例提供的另一种程序代码,然后函数NtAllocateVirtualMemory才能根据对象指针或者进程标识在目标进程上分配内存资源。

鉴于上述描述,在本申请的一种较佳实现方式中,上述预设挂钩函数为针对预设的对象指针获得函数的挂钩函数,其中,预设的对象指针获得函数为用于获得进程对象指针的函数。

由于用于获得对象指针的函数一般会隐藏在用于分配内存资源的函数显现细节中,所以,隐蔽性较高、不易被发现,有利用目标进程保持长久不被非法退出。

S202:判断目标内存分配指令是否为目标客户端发起的,若为否,执行S203。

S203:拒绝在目标进程上分配内存资源,以使得其它客户端无法获得用于存储非法代码的内存资源,进而退出目标进程失败。

其中,上述非法代码为用于退出目标进程的代码。

具体的,在判断得知上述目标内存分配指令不是目标客户端发起的情况下,可以向ObReferenceObjectByHandle函数返回拒绝访问状态,这样也就是该函数获得对象指针失败,进而NtAllocateVirtualMemory函数分配内存资源失败,因此,也就无法存储非法代码、执行非法代码了,有效的阻止了非法退出目标进程。

在本申请的一种具体实现方式中,在通过调用预设挂钩函数的方式,判断监测到的内存分配指令是否为针对目标进程的内存分配指令之前,还包括:

保存预设的对象指针获得函数的函数地址。

在判断得目标内存分配指令是目标客户端发起的情况下,通过预设的挂钩函数以及上述函数地址,在目标进程上分配内存资源。

需要说明的是,在本申请实施例中各个步骤的执行主体为目标客户端的情况下,本步骤中涉及的“其它客户端”可以理解为除了目标客户端以外的客户端;在本申请实施例中各个步骤的执行主体为用于监控目标客户端是否可能被恶意操作的客户端的情况下,本步骤中实际的“其它客户端”可以理解为除了目标客户端和作为执行主体的客户端以外的客户端。

由以上可见,上述各个实施例提供的方案中,在监测到针对目标客户端所运行的目标进程的内存分配指令后,若判断得知该内存分配指令不是目标客户端发起的,则可以认为上述内存分配指令为非法内存分配指令,进而拒绝在目标进程上分配内存资源。由于拒绝分配内存资源,其它客户端无法获得用于存储退出目标进程的非法代码的内存资源,进一步的也就无法执行用于退出目标进程的非法代码,因而,能够有效防止非法退出目标进程。

与上述进程处理方法相对应,本申请实施例还提供了一种进程处理的装置。

图4为本申请实施例提供的一种进程处理装置的结构示意图,该装置包括:

内存分配指令监测模块401,用于监测是否接收到针对目标进程的目标内存分配指令,其中,所述目标进程为用于运行目标客户端的进程;

内存分配指令发起判断模块402,用于在所述内存分配指令监测模块401的监测结果为是的情况下,判断所述目标内存分配指令是否为所述目标客户端发起的;

资源分配拒绝模块403,用于在所述内存分配指令发起判断模块402的判断结果为否的情况下,拒绝在所述目标进程上分配内存资源,以使得其它客户端无法获得用于存储非法代码的内存资源,进而退出所述目标进程失败,其中,所述非法代码为用于退出所述目标进程的代码。

具体的,所述内存分配指令监测模块401可以包括:

内存分配指令监测子模块,用于监测是否接收到内存分配指令;

内存分配指令判断子模块,用于在所述内存分配指令监测子模块的监测结果为是的情况下,通过调用预设挂钩函数的方式,判断监测到的内存分配指令是否为针对目标进程的内存分配指令;

内存分配指令判定子模块,用于所述内存分配指令判断子模块的判断结果为是的情况下,判定接收到了针对所述目标进程的目标内存分配指令。

具体的,所述预设挂钩函数为针对预设的对象指针获得函数的挂钩函数,其中,所述预设的对象指针获得函数为用于获得进程对象指针的函数。

具体的,所述预设挂钩函数为针对预设的内存分配函数的挂钩函数,其中,所述预设的内存分配函数为用于在进程上分配内存资源的函数。

在本申请的一种具体实现方式中,上述装置还包括:

函数地址保存模块,用于在所述内存分配指令判断子模块判断内存分配指令之前,保存所述预设的对象指针获得函数的函数地址;

内存资源分配模块,用于在判断得所述目标内存分配指令是所述目标客户端发起的情况下,通过所述预设的挂钩函数以及所述函数地址,在所述目标进程上分配内存资源。

由以上可见,上述各个实施例提供的方案中,在监测到针对目标客户端所运行的目标进程的内存分配指令后,若判断得知该内存分配指令不是目标客户端发起的,则可以认为上述内存分配指令为非法内存分配指令,进而拒绝在目标进程上分配内存资源。由于拒绝分配内存资源,其它客户端无法获得用于存储退出目标进程的非法代码的内存资源,进一步的也就无法执行用于退出目标进程的非法代码,因而,能够有效防止非法退出目标进程。

对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。

以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1