CN105975851B - 一种进程处理方法及装置 - Google Patents
一种进程处理方法及装置 Download PDFInfo
- Publication number
- CN105975851B CN105975851B CN201610269242.XA CN201610269242A CN105975851B CN 105975851 B CN105975851 B CN 105975851B CN 201610269242 A CN201610269242 A CN 201610269242A CN 105975851 B CN105975851 B CN 105975851B
- Authority
- CN
- China
- Prior art keywords
- function
- object function
- target
- hook
- called
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供的一种进程处理方法及装置,可以监测第一目标函数是否被调用,其中,所述第一目标函数为使用本地过程调用LPC机制向进程管理子系统发送消息的函数;若被调用,判断调用所述第一目标函数是否是用于结束目标进程;若为是,拒绝结束所述目标进程。由于是通过判断调用第一目标函数是否是用于结束目标进程,确定是否拒绝结束目标进程,且第一目标函数会在恶意程序通过结束任务的方式结束目标进程时被调用。因此,应用本发明实施例提供的进程处理方法及装置,可以防止恶意程序通过结束任务的方式结束目标进程,从而保护了目标进程的安全。
Description
技术领域
本发明涉及计算机软件技术领域,特别是涉及一种进程处理方法及装置。
背景技术
随着互联网技术发展,病毒、木马等恶意程序层出不穷,这些恶意程序为了防止自身被终端中的杀毒软件等安全软件查杀、拦截,它们会首先将终端中正在运行的安全软件的进程强制结束,从而保护自身安全。这会使得终端处于裸奔状态,严重地影响了终端的使用安全。
为了提高终端的安全性能,首要任务是保证安全软件自身的存活。现有技术中,一般是通过为进程句柄获取函数(例如NtOpenProcess)或者进程结束函数(例如NtTerminateProcess)等内核函数设置挂钩函数的方式,拦截恶意程序结束安全软件的进程,从而保证安全软件进程不被被恶意程序结束。
但是,当恶意程序通过任务管理器中的“结束任务”的方式结束安全软件进程时,操作系统是不会调用上述内核函数的,所以应用上述方式也就无法实现对结束安全软件进程的拦截。
因此,亟需提出一种能够拦截利用“结束任务”的方式结束进程的进程处理方法。
发明内容
本发明实施例的目的在于提供一种进程处理方法及装置,以防止恶意程序通过结束任务的方式结束目标进程,从而保护目标进程不被恶意结束,保护了目标进程的安全。
为了实现上述目的,本发明实施例公开了一种进程处理方法,所述方法包括:
监测第一目标函数是否被调用,其中,所述第一目标函数为使用本地过程调用LPC机制向进程管理子系统发送消息的函数;
若被调用,判断调用所述第一目标函数是否是用于结束目标进程;
若为是,拒绝结束所述目标进程。
优选的,所述判断调用所述第一目标函数是否是用于结束目标进程,包括:
通过与所述第一目标函数挂钩的第一钩子函数,判断调用所述第一目标函数是否是用于结束目标进程。
优选的,所述通过与所述第一目标函数挂钩的第一钩子函数,判断调用所述第一目标函数是否是用于结束目标进程,包括:
根据与所述第一目标函数挂钩的第一钩子函数中的发送端口句柄参数,获得所述第一目标函数发送消息的发送端口名称;
根据所述第一钩子函数中的窗口句柄参数,获得待操作进程的进程路径;
判断所述发送端口名称、所述进程路径和所述第一钩子函数的操作码参数是否满足以下条件:所述发送端口名称为预设的端口名称、所述进程路径为目标进程路径且所述操作码参数为预设的结束进程操作码;
若为是,则判定调用所述第一目标函数是用于结束所述目标进程;
否则,判定调用所述第一目标函数不是用于结束所述目标进程。
优选的,在所述判断调用所述第一目标函数是否是用于结束目标进程前,所述方法还包括:
保存所述第一目标函数的函数地址;
在调用所述第一目标函数不是用于结束所述目标进程的情况下,通过所述第一钩子函数,根据所述函数地址,响应对所述第一目标函数的调用。
优选的,所述方法还包括:
监测第二目标函数是否被调用,其中,所述第二目标函数为进程句柄获取函数或进程结束函数;
若被调用,判断调用所述第二目标函数是否是是用于结束所述目标进程;
若为是,执行所述拒绝结束所述目标进程的步骤。
为了实现上述目的,本发明实施例还公开了一种进程处理装置,所述装置包括:第一监测模块、第一判断模块和拒绝结束模块,
所述第一监测模块,用于监测第一目标函数是否被调用,其中,所述第一目标函数为使用本地过程调用LPC机制向进程管理子系统发送消息的函数;
所述第一判断模块,用于在所述第一监测模块监测到所述第一目标函数被调用时,判断调用所述第一目标函数是否是用于结束目标进程;
所述拒绝结束模块,用于在所述第一判断模块获得的判断结果为是时,拒绝结束所述目标进程。
优选的,所述第一判断模块,具体用于通过与所述第一目标函数挂钩的第一钩子函数,判断调用所述第一目标函数是否是用于结束目标进程。
优选的,所述第一判断模块包括:发送端口获取子模块、进程路径获取子模块、第一判断子模块、第一判定结果确定子模块和第二判定结果确定子模块,
所述发送端口获取子模块,用于根据与所述第一目标函数挂钩的第一钩子函数的发送端口句柄参数,获得所述第一目标函数发送消息的发送端口名称;
所述进程路径获取子模块,用于根据所述第一钩子函数的窗口句柄参数,获得待操作进程的进程路径;
所述第一判断子模块,用于判断所述发送端口名称、所述进程路径和所述第一钩子函数的操作码参数是否满足以下条件:所述发送端口名称为预设的端口名称、所述进程路径为目标进程路径且所述操作码参数为预设的结束进程操作码;
所述第一判定结果确定子模块,用于在所述第一判断子模块获得的判断结果为是时,判定调用所述第一目标函数是用于结束所述目标进程;
所述第二判定结果确定子模块,用于在所述第一判断子模块获得的判断结果为否时,判定调用所述第一目标函数不是用于结束所述目标进程。
优选的,所述装置还包括:保存模块和第一响应模块
所述保存模块,用于在所述第一判断模块判断调用所述第一目标函数是否是用于结束目标进程前,保存所述第一目标函数的函数地址;
所述第一响应模块,用于在调用所述第一目标函数不是用于结束所述目标进程的情况下,通述第一钩子函数,根据所述函数地址,响应对所述第一目标函数的调用。
优选的,所述装置还包括:第二监测模块、第二判断模块和触发模块;
所述第二监测模块,用于监测第二目标函数是否被调用,其中,所述第二目标函数为进程句柄获取函数或进程结束函数;
所述第二判断模块,用于在所述第二监测模块监测到所述二目标函数被调用时,判断调用所述第二目标函数是否是是用于结束所述目标进程;
所述触发模块,用于在所述第二判断模块获得的判断结果为是时,触发所述拒绝结束模块。
本发明实施例提供的一种进程处理方法及装置,可以监测第一目标函数是否被调用,其中,所述第一目标函数为使用本地过程调用LPC机制向进程管理子系统发送消息的函数;若被调用,判断调用所述第一目标函数是否是用于结束目标进程;若为是,拒绝结束所述目标进程。由于是通过判断调用第一目标函数是否是用于结束目标进程,确定是否拒绝结束目标进程,且第一目标函数会在恶意程序通过结束任务的方式结束目标进程时被调用。因此,应用本发明实施例提供的进程处理方法及装置,可以防止恶意程序通过结束任务的方式结束目标进程,从而保护了目标进程的安全。当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种进程处理方法的流程图;
图2为图1所示的实施例中的步骤S102的具体流程图;
图3为本发明实施例提供的另一种进程处理方法的流程图;
图4为本发明实施例提供的一种进程处理装置的结构图;
图5为图4所示的实施例中的模块402的具体结构图;
图6为本发明实施例提供的另一种进程处理装置的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种进程处理方法及装置,应用于终端。下面分别进行说明,首先对一种进程处理方法进行说明。
如图1所示,本发明实施例提供了一种进程处理方法,包括如下步骤:
S101、监测第一目标函数是否被调用,其中,所述第一目标函数为使用本地过程调用LPC机制向进程管理子系统发送消息的函数;若被调用,执行步骤S102;
其中,LPC是本地过程调用(Local Procedure Call)的简称。
由于用户在点击系统的任务管理器(taskmgr)中的“结束任务”按钮时,操作系统会调用使用LPC机制向任务管理子系统发送消息的第一目标函数,让任务管理子系统结束待操作的进程。例如,当用户点击任务管理器(taskmgr)中的“结束任务”按钮时,操作系统会使用shell32.dll的EedTask函数调用内核层(ring0)的函数NtRequestWaitReplyPort,函数NtRequestWaitReplyPort就会使用LPC机制向任务管理子系统发送消息,任务管理子系统会调用NtTerminateProcess等非常规内核函数结束待操作进程。
因此,可以通过对第一目标函数是否被调用进行监测,作为防止目标进程被恶意程序通过“结束任务”的方式结束的第一个步骤。
具体的,第一目标函数可以为函数NtRequestWaitReplyPort。
S102、判断调用所述第一目标函数是否是用于结束目标进程;若为是,执行步骤S103,否则,响应对第一目标函数的调用;
其中,目标进程可以是用户想要保护的病毒查杀软件进程等。
可以通过与所述第一目标函数挂钩的第一钩子函数,判断调用所述第一目标函数是否是用于结束目标进程。
将第一目标函数与第一钩子函数挂钩的过程为:查找系统服务描述符表(SystemServices Descriptor Table,SSDT),找到第一目标函数,保存第一目标函数的函数地址;定义一个第一钩子函数,利用第一钩子函数替换SSDT表中的第一目标函数。
S103、拒绝结束所述目标进程。
由于是通过判断调用第一目标函数是否是用于结束目标进程,确定是否拒绝结束目标进程,且第一目标函数会在恶意程序通过结束任务的方式结束目标进程时被调用。因此,应用本发明图1所示的实施例提供的进程处理方法,可以防止恶意程序通过结束任务的方式结束目标进程,从而保护了目标进程的安全,当目标进程为终端中的安全软件进程时,还可以提高系统的安全性。
如图2所示,图1所示的实施例中的步骤S102中所述的在将第一钩子函数与第一目标函数挂钩后,所述通过与所述第一目标函数挂钩的第一钩子函数,判断调用所述第一目标函数是否是用于结束目标进程,包括:
S201、根据与所述第一目标函数挂钩的第一钩子函数中的发送端口句柄参数,获得所述第一目标函数发送消息的发送端口名称;
由于在正常情况下,应用程序通过调用函数的方式结束进程时,所调用的函数通常会通过特定的端口(例如ApiPort)向任务管理子系统发送消息。
因此,可以在第一钩子函数中设置一个包含发送端口句柄的参数,以使操作系统通过调用相关的内核函数获取第一目标函数中的发送端口的名称,然后判断该发送端口名称是否为用于发送结束进程消息的特定端口,从而初步确定调用第一目标函数的目的是否是用于结束待操作进程;
例如,在第一钩子函数中,第一个参数可以为发送端口句柄,通过内核函数ObReferenceObjectByHandle,可以将发送端口句柄转换为发送端口的结构指针;通过内核函数ObReferenceObjectByName,可以获取发送端口的名称;将获取的发送端口名称与名为“\\Sessions\\%d\\Windows\\ApiPort”的预设端口进行匹配,其中“%d”是变量值,是客户端当前用户会话的ID(identification),可以通过调用内核函数PsGetCurrentProcessSessionId获得当前用户会话ID。当二者匹配上时,说明发送端口名称为预设的端口名称,第一目标函数是往名为“ApiPort”的预设端口发送消息;发送的消息极有可能是用于结束待操作进程的消息。
S202、根据所述第一钩子函数中的窗口句柄参数,获得待操作进程的进程路径;
可以理解的是,要想保护目标进程不被结束,仅仅知道调用第一目标函数的目的是用于结束待操作进程是不够的,还应知道待操作进程是否为目标进程,否则可能会影响用户对其他进程的操作。
通常可以通过判断待操作进程的进程路径是否为目标进程的进程路径来判断待操作进程是否为目标进程。
其中,待操作进程的进程路径可以通过第一钩子函数中的待操作进程的窗口句柄参数获得,目标进程的进程路径可以从注册表中读取。
具体的,可以将第一钩子函数中的第二个参数设置为向任务管理子系统发送的消息的具体数据,第二个参数可以为PPORT_MESSAGE结构类型,将第二个参数转换为PCSRSS_MESSAGE结构指针后,该结构指针中保存有待操作进程的窗口句柄的参数;
可以根据PCSRSS_MESSAGE结构指针中保存的待操作进程的窗口句柄参数获得待操作进程的窗口句柄;然后调用进程ID查询内核函数查询待操作进程的ID;最后调用进程路径获取内核函数并根据待操作进程的ID,获取待操作进程的进程路径。
例如,当第一目标函数为函数NtRequestWaitReplyPort时,第一钩子函数可以为NewNtRequestWaitReplyPort,其PCSRSS_MESSAGE结构指针中的第二个参数可以为hEndTaskWnd,待操作进程的窗口句柄参数就保存在hEndTaskWnd中;可以调用内核函数ZwUserQueryWindow查询待操作进程的进程ID,然后调用ZwQueryInformationProcess等内核函数获取待操作进程的进程路径。
S203、判断所述发送端口名称、所述进程路径和所述第一钩子函数的操作码参数是否满足预设条件;若为是,执行步骤S204,否则,执行步骤S205;
其中,预设条件包括:所述发送端口名称为预设的端口名称、所述进程路径为目标进程路径且所述操作码参数为预设的结束进程操作码。
其中,判断发送端口名称是否为预设的端口名称的过程与步骤S201中所述的一致,此处不再赘述。
其中,判断进程路径是否为目标进程路径的过程为:预先读取终端中的应用程序注册表获取目标进程路径的列表,判断步骤S202中获得的待操作进程的进程路径是否为预先获得的目标进程路径列表中的进程路径,如果是,说明待操作进程的进程路径是目标进程路径;否则,说明待操作进程的进程路径不是目标进程路径。
可以理解的是,在判定所述发送端口名称为预设的端口名称、所述进程路径为目标进程路径后,还需要判断第一钩子函数中保存的操作码参数是否为预设的结束进程操作码,以确认调用第一目标函数的目的就是结束目标进程;在上述三个条件同时满足时,说明调用第一目标函数的目的就是结束目标进程,调用第一目标函数的执行主体很可能是恶意程序,需要拒绝响应第一目标函数,从而拒绝通过结束任务的方式结束目标进程。
其中,预设的结束进程的操作码包括:
EXIT_WINDOW_PORT_ID,是退出进程操作码;
END_TASK_PORT_ID,是结束任务操作码;
PROCESS_SHUTDOWN_PARAMETERS,是进程关闭的操作码。
这三个操作码都是和结束进程相关的,只要第一钩子函数中的操作码参数等于这三操作码的其中一个,就可以认为第一钩子函数中保存的操作码参数是预设的结束进程操作码。
具体的,第一钩子函数中的操作码参数也可以保存在PCSRSS_MESSAGE结构指针中。
S204、判定调用所述第一目标函数是用于结束所述目标进程;
S205、判定调用所述第一目标函数不是用于结束所述目标进程。
在上述预设条件中的任一条件不满足时,说明调用第一目标函数的目的不是结束目标进程,需要正常响应对第一目标函数的调用。
需要注意的是,步骤S201和步骤S202的执行顺序并不影响实现本发明的发明目的,因此,本发明对步骤S201和步骤S202执行顺序不做限定。
由于具体可以通过与第一目标函数挂钩的第一钩子函数,防止恶意程序通过调用第一目标函数的方式结束目标进程,且第一目标函数会在恶意程序通过结束任务的方式结束目标进程时被调用。因此,应用本发明实施例提供的进程处理方法,可以防止恶意程序通过结束任务的方式结束目标进程,从而保护了目标进程的安全。
优选的,在图1所示的实施例的基础上,本发明实施例还提供了另一种进程处理方法,在所述判断调用所述第一目标函数是否是用于结束目标进程前,该方法还可以包括:
步骤一、保存所述第一目标函数的函数地址;
具体的,可以在将第一目标函数与第一钩子函数挂钩的过程中,保存第一目标函数的地址;例如,在图1所示的实施例中的步骤S102中的挂钩过程中,当在SSDT表中找到第一目标函数时,保存第一目标函数的地址。
步骤二、在调用所述第一目标函数不是用于结束所述目标进程的情况下,通过所述第一钩子函数,根据所述函数地址,响应所述第一目标函数。
具体的,可以在第一钩子函数中设置一个指向第一目标函数的地址的指针,在调用所述第一目标函数不是用于结束所述目标进程的情况下,使系统调用第一钩子函数中的指针指向第一目标函数,即响应系统对第一目标函数的调用。
这样,当系统调用第一目标函数不是用于结束目标进程时,可以实现系统对第一目标函数的正常调用,保证用户对其他进程的正常操作。
如图3所示,在图1所示的实施例的基础上,本发明实施例还提供了另一种进程处理方法,该方法还包括:
S301、监测第二目标函数是否被调用,其中,所述第二目标函数为进程句柄获取函数或进程结束函数;若被调用,执行步骤S302;
由于用户在点击系统的任务管理器(taskmgr)中的“结束进程”按钮时,操作系统会调用进程句柄获取函数或进程结束函数这样的第二目标函数,让任务管理子系统结束待操作的进程。例如,当用户点击任务管理器(taskmgr)中的“结束任务”按钮时,操作系统会先调用进程句柄获取函数NtOpenProcess,然后调用进程结束函数NtTerminateProcess等非常规内核函数结束待操作进程。
因此,可以通过对第二目标函数是否被调用进行监测作为防止目标进程被恶意程序程序通过“结束进程”的方式结束结束的第一个步骤。
S302、判断调用所述第二目标函数是否是是用于结束所述目标进程;如果是,执行步骤S103;否则,执行步骤S303;
可以通过与所述第二目标函数挂钩的第二钩子函数,判断调用所述第二目标函数是否是用于结束目标进程。
将第二目标函数与第二钩子函数挂钩的过程为:查找系SSDT表,找到第二目标函数,保存第二目标函数的函数地址;定义一个第二钩子函数,利用第二钩子函数替换SSDT表中的第二目标函数。
需要说明的是,利用与第二目标函数挂钩的第二钩子函数,判断调用所述第二目标函数是否是是用于结束所述目标进程的具体过程属于现有技术,此处不再赘述。
S303、响应对第二目标函数的调用。
应用本发明图3所示的实施例,可以同时防止恶意程序通过“结束任务”的方式或“结束进程”的方式结束目标进程,当目标进程为终端中的安全软件进程时,可以全面提高系统的安全性。
本发明实施例提供的一种进程处理方法,可以监测第一目标函数是否被调用,其中,所述第一目标函数为使用本地过程调用LPC机制向进程管理子系统发送消息的函数;若被调用,判断调用所述第一目标函数是否是用于结束目标进程;若为是,拒绝结束所述目标进程。由于是通过判断调用第一目标函数是否是用于结束目标进程,确定是否拒绝结束目标进程,且第一目标函数会在恶意程序通过结束任务的方式结束目标进程时被调用。因此,应用本发明实施例提供的进程处理方法,可以防止恶意程序通过结束任务的方式结束目标进程,从而保护了目标进程的安全。
相应于图1所示的方法实施例,如图4所示,本发明还提供了一种进程处理装置,该装置包括:第一监测模块401、第一判断模块402和拒绝结束模块403,
第一监测模块401,用于监测第一目标函数是否被调用,其中,所述第一目标函数为使用本地过程调用LPC机制向进程管理子系统发送消息的函数;
其中,LPC是本地过程调用(Local Procedure Call)的简称。
由于用户在点击系统的任务管理器(taskmgr)中的“结束任务”按钮时,操作系统会调用使用LPC机制向任务管理子系统发送消息的第一目标函数,让任务管理子系统结束待操作的进程。例如,当用户点击任务管理器(taskmgr)中的“结束任务”按钮时,操作系统会使用shell32.dll的EedTask函数调用内核层(ring0)的函数NtRequestWaitReplyPort,函数NtRequestWaitReplyPort就会使用LPC机制向任务管理子系统发送消息,任务管理子系统会调用NtTerminateProcess等非常规内核函数结束待操作进程。
因此,可以通过第一监测模块401对第一目标函数是否被调用进行监测,作为防止目标进程被恶意程序程序通过“结束进程”的方式结束结束的首要任务。
具体的,第一目标函数可以为函数NtRequestWaitReplyPort。
第一判断模块402,用于在所述第一监测模块监测到所述第一目标函数被调用时,判断调用所述第一目标函数是否是用于结束目标进程;
其中,目标进程可以是用户想要保护的病毒查杀软件进程等。
具体的,第一判断模块402,用于通过与所述第一目标函数挂钩的第一钩子函数,判断调用所述第一目标函数是否是用于结束目标进程。
其中,将第一目标函数与第一钩子函数挂钩的过程为:查找SSDT表,找到第一目标函数;定义一个第一钩子函数,保存第一目标函数的函数地址,利用第一钩子函数替换SSDT表中的第一目标函数。
拒绝结束模块403,用于在所述第一判断模块获得的判断结果为是时,拒绝结束所述目标进程。
由于是通过判断调用第一目标函数是否是用于结束目标进程,确定是否拒绝结束目标进程,且第一目标函数会在恶意程序通过结束任务的方式结束目标进程时被调用。因此,应用本发明图4所示的实施例提供的进程处理方法,可以防止恶意程序通过结束任务的方式结束目标进程,从而保护了目标进程的安全,当目标进程为终端中的安全软件进程时,还可以提高系统的安全性。。
如图5所示,图4所示的实施例中的第一判断模块402具体包括:发送端口获取子模块501、进程路径获取子模块502、第一判断子模块503、第一判定结果确定子模块504和第二判定结果确定子模块505,
发送端口获取子模块501,用于根据与所述第一目标函数挂钩的第一钩子函数的发送端口句柄参数,获得所述第一目标函数发送消息的发送端口名称;
由于在正常情况下,用户或其他应用程序通过调用第一目标函数的方式结束进程时,第一目标函数会通过特定的端口(例如ApiPort)向任务管理子系统发送消息。
因此,可以在第一钩子函数中设置一个包含发送端口句柄的参数,以使操作系统通过调用相关的内核函数获取第一目标函数中的发送端口的名称,然后判断该发送端口名称是否为用于发送结束进程消息的特定端口,从而初步确定调用第一目标函数的目的是否是用于结束待操作进程;
例如,在第一钩子函数中,第一个参数可以为发送端口句柄,通过内核函数ObReferenceObjectByHandle,可以将发送端口句柄转换为发送端口的结构指针;通过内核函数ObReferenceObjectByName,可以获取发送端口的名称;将获取的发送端口名称与名为“\\Sessions\\%d\\Windows\\ApiPort”的预设端口进行匹配,其中“%d”是变量值,是客户端当前用户会话的ID(identification),可以通过调用内核函数PsGetCurrentProcessSessionId获得当前用户会话ID。当二者匹配上时,说明发送端口名称为预设的端口名称,第一目标函数是往名为“ApiPort”的预设端口发送消息;发送的消息极有可能是用于结束待操作进程的消息。
进程路径获取子模块502,用于根据所述第一钩子函数的窗口句柄参数,获得待操作进程的进程路径;
可以理解的是,要想保护目标进程不被结束,仅仅知道调用第一目标函数的目的是用于结束待操作进程是不够的,还应知道待操作进程是否为目标进程,否则可能会影响用户对其他进程的操作。
通常可以通过判断待操作进程的进程路径是否为目标进程的进程路径来判断待操作进程是否为目标进程。
其中,待操作进程的进程路径可以通过第一钩子函数中的待操作进程的窗口句柄参数获得,目标进程的进程路径可以从注册表中读取。
具体的,可以将第一钩子函数中的第二个参数设置为向任务管理子系统发送的消息的具体数据,第二个参数可以为PPORT_MESSAGE结构类型,将第二个参数转换为PCSRSS_MESSAGE结构指针后,该结构指针中保存有待操作进程的窗口句柄的参数;
可以根据PCSRSS_MESSAGE结构指针中保存的待操作进程的窗口句柄参数获得待操作进程的窗口句柄;然后调用进程ID查询内核函数查询待操作进程的ID;最后调用进程路径获取内核函数并根据待操作进程的ID,获取待操作进程的进程路径。
第一判断子模块503,用于判断所述发送端口名称、所述进程路径和所述第一钩子函数的操作码参数是否满足预设条件;
其中,预设条件包括:所述发送端口名称为预设的端口名称、所述进程路径为目标进程路径且所述操作码参数为预设的结束进程操作码;
其中,判断发送端口名称是否为预设的端口名称的过程与发送端口获取子模块501中所述的一致,此处不再赘述。
其中,判断进程路径是否为目标进程路径的过程为:预先读取终端中的应用程序注册表获取目标进程路径的列表,判断发送端口获取子模块501获得的待操作进程的进程路径是否为预先获得的目标进程路径列表中的进程路径,如果是,说明待操作进程的进程路径是目标进程路径;否则,说明待操作进程的进程路径不是目标进程路径。
可以理解的是,在判定所述发送端口名称为预设的端口名称、所述进程路径为目标进程路径后,还需要判断第一钩子函数中保存的操作码参数是否为预设的结束进程操作码,以确认调用第一目标函数的目的就是结束目标进程;在上述三个条件同时满足时,说明调用第一目标函数的目的就是结束目标进程,调用第一目标函数的执行主体很可能是恶意程序,需要拒绝响应第一目标函数,从而拒绝通过结束任务的方式结束目标进程。
其中,预设的结束进程操作码包括:
EXIT_WINDOW_PORT_ID,是退出进程操作码;
END_TASK_PORT_ID,是结束任务操作码;
PROCESS_SHUTDOWN_PARAMETERS,是进程关闭的操作码。
这三个操作码都是和结束进程相关的,只要第一钩子函数中的操作码参数等于这三操作码的其中一个,就可以认为第一钩子函数中保存的操作码参数是预设的结束进程操作码。
具体的,第一钩子函数中的操作码参数也可以保存在PCSRSS_MESSAGE结构指针中。
第一判定结果确定子模块504,用于在所述第一判断子模块503获得的判断结果为是时,判定调用所述第一目标函数是用于结束所述目标进程;
第二判定结果确定子模块505,用于在所述第一判断子模块503获得的判断结果为否时,判定调用所述第一目标函数不是用于结束所述目标进程。
在上述预设条件中的任一条件不满足时,说明调用第一目标函数的目的不是结束目标进程,需要正常响应对第一目标函数的调用。
由于具体可以通过与第一目标函数挂钩的第一钩子函数,防止恶意程序通过调用第一目标函数的方式结束目标进程,且第一目标函数是会在恶意程序通过结束任务的方式结束目标进程时被调用。因此,应用本发明图4所示的实施例提供的进程处理方法,可以防止恶意程序通过结束任务的方式结束目标进程,从而保护了目标进程的安全。
优选的,在图4所示的实施例的基础上,本发明实施例还提供了另一种进程处理装置,该装置还可以包括:保存模块和第一响应模块
保存模块,用于在所述第一判断模块判断调用所述第一目标函数是否是用于结束目标进程前,保存所述第一目标函数的函数地址;
具体的,可以在将第一目标函数与第一钩子函数挂钩的过程中,保存第一目标函数的地址;例如,当在SSDT表中找到第一目标函数时,保存第一目标函数的地址。
第一响应模块,用于在调用所述第一目标函数不是用于结束所述目标进程的情况下,通过所述第一钩子函数,根据所述函数地址,响应所述第一目标函数。
具体的,可以在第一钩子函数中设置一个指向第一目标函数的地址的指针,在调用所述第一目标函数不是用于结束所述目标进程的情况下,使系统调用第一钩子函数中的指针指向第一目标函数,即响应系统对第一目标函数的调用。
这样,当系统调用第一目标函数不是用于结束目标进程时,可以实现系统对第一目标函数的正常调用,保证用户对其他进程的正常操作。
如图6所示,在图4所示的实施例的基础上,本发明实施例还提供了另一种进程处理装置,该装置还包括:第二监测模块601、第二判断模块602、触发模块603和第二响应模块604;
第二监测模块601,用于监测第二目标函数是否被调用,其中,所述第二目标函数为进程句柄获取函数或进程结束函数;
由于用户在点击系统的任务管理器(taskmgr)中的“结束进程”按钮时,操作系统会调用进程句柄获取函数或进程结束函数这样的第二目标函数,让任务管理子系统结束待操作的进程。例如,当用户点击任务管理器(taskmgr)中的“结束任务”按钮时,操作系统会先调用进程句柄获取函数NtOpenProcess,然后调用进程结束函数NtTerminateProcess等非常规内核函数结束待操作进程。
因此,可以通过对第二目标函数是否被调用进行监测,作为防止目标进程被恶意程序程序通过“结束进程”的方式结束结束的首要任务。
第二判断模块602,用于在所述第二监测模块601监测到所述二目标函数被调用时,判断调用所述第二目标函数是否是是用于结束所述目标进程;
可以通过与所述第二目标函数挂钩的第二钩子函数,判断调用所述第二目标函数是否是用于结束目标进程。
将第二目标函数与第二钩子函数挂钩的过程为:查找SSDT表,找到第二目标函数,保存第二目标函数的函数地址;定义一个第二钩子函数,利用第二钩子函数替换SSDT表中的第二目标函数。
需要说明的是,利用与第二目标函数挂钩的第二钩子函数,判断调用所述第二目标函数是否是是用于结束所述目标进程的具体过程属于现有技术,此处不再赘述。
触发模块603,用于在所述第二判断模块602获得的判断结果为是时,触发所述拒绝结束模块403;
第二响应模块604,用于在所述第二判断模块602获得的判断结果为否时,响应对第二目标函数的调用。
应用本发明图6所示的实施例,可以同时防止恶意程序通过“结束任务”的方式或“结束进程”的方式结束目标进程,全面保护了目标进程的安全,当目标进程为终端中的安全软件进程时,可以全面提高系统的安全性。
本发明实施例提供的一种进程处理装置,可以监测第一目标函数是否被调用,其中,所述第一目标函数为使用本地过程调用LPC机制向进程管理子系统发送消息的函数;若被调用,判断调用所述第一目标函数是否是用于结束目标进程;若为是,拒绝结束所述目标进程。由于是通过判断调用第一目标函数是否是用于结束目标进程,确定是否拒绝结束目标进程,且第一目标函数会在恶意程序通过结束任务的方式结束目标进程时被调用。因此,应用本发明实施例提供的进程处理装置,可以防止恶意程序通过结束任务的方式结束目标进程,从而保护了目标进程的安全。
对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (6)
1.一种进程处理方法,其特征在于,所述方法包括:
监测第一目标函数是否被调用,其中,所述第一目标函数为使用本地过程调用LPC机制向进程管理子系统发送消息的函数;
若被调用,判断调用所述第一目标函数是否是用于结束目标进程;
若为是,拒绝结束所述目标进程;
其中,所述判断调用所述第一目标函数是否是用于结束目标进程,包括:
通过与所述第一目标函数挂钩的第一钩子函数,判断调用所述第一目标函数是否是用于结束目标进程;
所述通过与所述第一目标函数挂钩的第一钩子函数,判断调用所述第一目标函数是否是用于结束目标进程,包括:
根据与所述第一目标函数挂钩的第一钩子函数中的发送端口句柄参数,获得所述第一目标函数发送消息的发送端口名称;
根据所述第一钩子函数中的窗口句柄参数,获得待操作进程的进程路径;
判断所述发送端口名称、所述进程路径和所述第一钩子函数的操作码参数是否满足以下条件:所述发送端口名称为预设的端口名称、所述进程路径为目标进程路径且所述操作码参数为预设的结束进程操作码;
若为是,则判定调用所述第一目标函数是用于结束所述目标进程;
否则,判定调用所述第一目标函数不是用于结束所述目标进程。
2.根据权利要求1所述的方法,其特征在于,在所述判断调用所述第一目标函数是否是用于结束目标进程前,所述方法还包括:
保存所述第一目标函数的函数地址;
在调用所述第一目标函数不是用于结束所述目标进程的情况下,通过所述第一钩子函数,根据所述函数地址,响应对所述第一目标函数的调用。
3.根据权利要求1-2中任一项所述的方法,其特征在于,所述方法还包括:
监测第二目标函数是否被调用,其中,所述第二目标函数为进程句柄获取函数或进程结束函数;
若被调用,判断调用所述第二目标函数是否是是用于结束所述目标进程;
若为是,执行所述拒绝结束所述目标进程的步骤。
4.一种进程处理装置,其特征在于,所述装置包括:第一监测模块、第一判断模块和拒绝结束模块,
所述第一监测模块,用于监测第一目标函数是否被调用,其中,所述第一目标函数为使用本地过程调用LPC机制向进程管理子系统发送消息的函数;
所述第一判断模块,用于在所述第一监测模块监测到所述第一目标函数被调用时,判断调用所述第一目标函数是否是用于结束目标进程;
所述拒绝结束模块,用于在所述第一判断模块获得的判断结果为是时,拒绝结束所述目标进程;
其中,所述第一判断模块,具体用于通过与所述第一目标函数挂钩的第一钩子函数,判断调用所述第一目标函数是否是用于结束目标进程;
所述第一判断模块包括:发送端口获取子模块、进程路径获取子模块、第一判断子模块、第一判定结果确定子模块和第二判定结果确定子模块,
所述发送端口获取子模块,用于根据与所述第一目标函数挂钩的第一钩子函数的发送端口句柄参数,获得所述第一目标函数发送消息的发送端口名称;
所述进程路径获取子模块,用于根据所述第一钩子函数的窗口句柄参数,获得待操作进程的进程路径;
所述第一判断子模块,用于判断所述发送端口名称、所述进程路径和所述第一钩子函数的操作码参数是否满足以下条件:所述发送端口名称为预设的端口名称、所述进程路径为目标进程路径且所述操作码参数为预设的结束进程操作码;
所述第一判定结果确定子模块,用于在所述第一判断子模块获得的判断结果为是时,判定调用所述第一目标函数是用于结束所述目标进程;
所述第二判定结果确定子模块,用于在所述第一判断子模块获得的判断结果为否时,判定调用所述第一目标函数不是用于结束所述目标进程。
5.根据权利要求4所述的装置,其特征在于,所述装置还包括:保存模块和第一响应模块
所述保存模块,用于在所述第一判断模块判断调用所述第一目标函数是否是用于结束目标进程前,保存所述第一目标函数的函数地址;
所述第一响应模块,用于在调用所述第一目标函数不是用于结束所述目标进程的情况下,通述第一钩子函数,根据所述函数地址,响应对所述第一目标函数的调用。
6.根据权利要求4-5中任一项所述的装置,其特征在于,所述装置还包括:第二监测模块、第二判断模块和触发模块;
所述第二监测模块,用于监测第二目标函数是否被调用,其中,所述第二目标函数为进程句柄获取函数或进程结束函数;
所述第二判断模块,用于在所述第二监测模块监测到所述二目标函数被调用时,判断调用所述第二目标函数是否是是用于结束所述目标进程;
所述触发模块,用于在所述第二判断模块获得的判断结果为是时,触发所述拒绝结束模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610269242.XA CN105975851B (zh) | 2016-04-27 | 2016-04-27 | 一种进程处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610269242.XA CN105975851B (zh) | 2016-04-27 | 2016-04-27 | 一种进程处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105975851A CN105975851A (zh) | 2016-09-28 |
CN105975851B true CN105975851B (zh) | 2019-02-12 |
Family
ID=56994337
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610269242.XA Active CN105975851B (zh) | 2016-04-27 | 2016-04-27 | 一种进程处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105975851B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111124661B (zh) * | 2019-10-11 | 2024-04-09 | 合肥非度信息技术有限公司 | 基于java线程池主动释放资源的短信发送方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101414341A (zh) * | 2007-10-15 | 2009-04-22 | 北京瑞星国际软件有限公司 | 一种软件自我保护的方法 |
CN102034050A (zh) * | 2011-01-25 | 2011-04-27 | 四川大学 | 基于虚拟机和敏感Native API调用感知的恶意软件动态检测方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5178539B2 (ja) * | 2008-04-04 | 2013-04-10 | キヤノン株式会社 | 情報処理装置、情報処理装置の制御方法、セッション管理システム並びにプログラム |
-
2016
- 2016-04-27 CN CN201610269242.XA patent/CN105975851B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101414341A (zh) * | 2007-10-15 | 2009-04-22 | 北京瑞星国际软件有限公司 | 一种软件自我保护的方法 |
CN102034050A (zh) * | 2011-01-25 | 2011-04-27 | 四川大学 | 基于虚拟机和敏感Native API调用感知的恶意软件动态检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105975851A (zh) | 2016-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7877795B2 (en) | Methods, systems, and computer program products for automatically configuring firewalls | |
US9438623B1 (en) | Computer exploit detection using heap spray pattern matching | |
CN109688097B (zh) | 网站防护方法、网站防护装置、网站防护设备及存储介质 | |
US9824215B2 (en) | System, method, and computer program product for monitoring and/or analyzing at least one aspect of an invocation of an interface | |
CN106709325B (zh) | 一种监控程序的方法及装置 | |
CN111651754B (zh) | 入侵的检测方法和装置、存储介质、电子装置 | |
CN108551446A (zh) | 防攻击的syn报文处理方法、装置、防火墙及存储介质 | |
CN104021141B (zh) | 数据处理和云服务的方法、装置及系统 | |
CN106656989B (zh) | 一种流量监控方法及终端 | |
CN104780185A (zh) | 信息分享控制方法及装置 | |
CN111368293B (zh) | 进程管理方法、装置、系统与计算机可读存储介质 | |
US8839406B2 (en) | Method and apparatus for controlling blocking of service attack by using access control list | |
CN106682493B (zh) | 一种防止进程被恶意结束的方法、装置及电子设备 | |
CN114257413A (zh) | 基于应用容器引擎的反制阻断方法、装置和计算机设备 | |
US11409871B1 (en) | Universal tracing of side-channel processes in computing environments | |
US20080172742A1 (en) | Information processing system | |
CN105975851B (zh) | 一种进程处理方法及装置 | |
CN108494749B (zh) | Ip地址禁用的方法、装置、设备及计算机可读存储介质 | |
US8245294B1 (en) | Network based virus control | |
CN110753060B (zh) | 一种进程操作控制方法、装置及电子设备和存储介质 | |
CN107818260B (zh) | 保障系统安全的方法及装置 | |
CN104239790B (zh) | 病毒处理方法及装置 | |
CN110417615B (zh) | 校验开关控制方法、装置、设备及计算机可读存储介质 | |
CN109981573B (zh) | 安全事件响应方法及装置 | |
CN106127041A (zh) | 防止剪贴板数据被监听的方法、装置及终端设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20181214 Address after: Room 105-53811, No. 6 Baohua Road, Hengqin New District, Zhuhai City, Guangdong Province Applicant after: Zhuhai Leopard Technology Co.,Ltd. Address before: 100085 East District, Second Floor, 33 Xiaoying West Road, Haidian District, Beijing Applicant before: BEIJING KINGSOFT INTERNET SECURITY SOFTWARE Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |