1.一种拦截恶意程序关机的方法,其特征在于,包括:
通过钩子函数监听操作进程发送的关机本地过程调用消息,其中,所述钩子函数挂钩发送所述关机本地过程调用消息的内核函数;
通过所述钩子函数判断所述关机本地过程调用消息是否符合预定的拦截条件;
若所述关机本地过程调用消息符合预定的拦截条件,且所述操作进程的名称包含在预设的恶意程序进程列表中,则通过所述钩子函数拦截所述关机本地过程调用消息。
2.根据权利要求1所述的拦截恶意程序关机的方法,其特征在于,在通过钩子函数监听操作进程发送的关机本地过程调用消息之前,所述方法还包括:
查询预设的系统服务描述符表,获取发送所述关机本地过程调用消息的内核函数的当前地址,并保存获取的发送所述关机本地过程调用消息的内核函数的当前地址;
创建钩子函数,获取所述钩子函数的函数地址;
在所述系统服务描述符表中,将发送所述关机本地过程调用消息的内核函数的当前地址更新为所述钩子函数的函数地址。
3.根据权利要求1所述的拦截恶意程序关机的方法,其特征在于,所述关机本地过程调用消息包括:目标端口的句柄值和操作命令值;
所述预定的拦截条件包括:预定的关机端口句柄值及预定的关机操作命令值,其中,所述预定的关机端口句柄值为关机或重启端口的句柄值,所述预定的关机操作命令值包括:关机和重启;
所述通过所述钩子函数判断所述关机本地过程调用消息是否符合预定的拦截条件包括:
通过所述钩子函数判断所述关机本地过程调用消息中的目标端口的句柄值是否与预定的关机端口句柄值相同;
若与预定的关机端口句柄值相同,则判断所述关机本地过程调用消息中的操作命令值是否为关机或重启;
若所述关机本地过程调用消息中的操作命令值为关机或重启,则所述关机本地过程调用消息符合预定的拦截条件。
4.根据权利要求1所述的拦截恶意程序关机的方法,其特征在于,所述若所述关机本地过程调用消息符合预定的拦截条件,且所述操作进程的名称包含在预设的恶意程序进程列表中,则通过所述钩子函数拦截所述关机本地过程调用消息包括:
若所述关机本地过程调用消息符合预定的拦截条件,则通过所述钩子函数获取所述操作进程的安装路径;
从获取的所述操作进程的安装路径中,提取所述操作进程的名称;
查询预设的恶意程序进程列表,若所述操作进程的名称包含在预设的恶意程序进程列表中,则拦截所述关机本地过程调用消息。
5.根据权利要求4所述的拦截恶意程序关机的方法,其特征在于,所述拦截所述关机本地过程调用消息包括:
退出所述钩子函数,不将所述关机本地过程调用消息传送给发送所述关机本地过程调用消息的内核函数。
6.根据权利要求1所述的拦截恶意程序关机的方法,其特征在于,所述方法还包括:
若所述关机本地过程调用消息不符合预定的拦截条件,或者,所述操作进程的名称没有包含在预设的恶意程序进程列表中,则通过所述钩子函数将所述关机本地过程调用消息传送给发送所述关机本地过程调用消息的内核函数。
7.根据权利要求6所述的拦截恶意程序关机的方法,其特征在于,所述通过所述钩子函数将所述关机本地过程调用消息传送给发送所述关机本地过程调用消息的内核函数之前,所述方法还包括:
在系统服务描述符表中,将发送所述关机本地过程调用消息的内核函数的当前地址更新为已保存的发送所述关机本地过程调用消息的内核函数的原始地址。
8.根据权利要求1-7任一项所述的拦截恶意程序关机的方法,其特征在于,所述恶意程序进程列表是可扩展的恶意程序进程列表。
9.一种拦截恶意程序关机的装置,其特征在于,包括:
监听模块,用于通过钩子函数监听操作进程发送的关机本地过程调用消息,其中,所述钩子函数挂钩发送所述关机本地过程调用消息的内核函数;
判断模块,用于通过所述钩子函数判断所述关机本地过程调用消息是否符合预定的拦截条件;
拦截模块,用于若所述关机本地过程调用消息符合预定的拦截条件,且所述操作进程的名称包含在预设的恶意程序进程列表中,则通过所述钩子函数拦截所述关机本地过程调用消息。
10.根据权利要求9所述的拦截恶意程序关机的装置,其特征在于,所述装置还包括:挂钩模块;所述挂钩模块包括:
第一获取单元,用于查询预设的系统服务描述符表,获取发送所述关机本地过程调用消息的内核函数的当前地址,并保存获取的发送所述关机本地过程调用消息的内核函数的当前地址;
第二获取单元,用于创建钩子函数,获取所述钩子函数的函数地址;
地址更新单元,用于在所述系统服务描述符表中,将发送所述关机本地过程调用消息的内核函数的当前地址更新为所述钩子函数的函数地址。