一种防止进程被恶意结束的方法、装置及电子设备制造方法及图纸

技术编号:15355659 阅读:70 留言:0更新日期:2017-05-17 13:55
本发明专利技术的实施例公开一种防止进程被恶意结束的方法、装置及电子设备。方法包括:通过反汇编内核层中结束进程的函数,确定内核层中结束进程的函数调用获取句柄对应内核对象的函数时的内存地址;注入预先设置的钩子函数,监测到结束进程的函数发出进程结束请求时,钩住进程结束请求调用获取句柄对应内核对象的函数时的内存地址;利用钩住的内存地址,截获结束进程的函数的进程句柄的内核对象,依据截获的所述内核对象,获取进程路径信息;在获取的所述进程路径信息对应的进程为预先设置的安全防护进程时,拒绝所述内核层中结束进程的函数的进程结束请求。应用本发明专利技术,可以提升系统的安全防护效率和安全性。

【技术实现步骤摘要】

本专利技术涉及计算机安全技术,尤其涉及一种防止进程被恶意结束的方法、装置及电子设备
技术介绍
随着Windows系统内核层技术细节的逐渐公开,越来越多的木马病毒等恶意应用程序开始使用内核层驱动程序来保护自身的进程,受内核层驱动程序保护的恶意应用程序的进程,可以结束(杀死)Windows系统中的安全防护进程,例如,杀毒软件或防火墙软件的进程,从而使得恶意应用程序的进程可以根据恶意应用程序提供者的意图,对用户的进程或系统进程进行恶意攻击,可能造成计算机运行不稳定,甚至可能给用户带来非常大的经济损失,例如,隐私信息的泄露以及物质财产的被窃取。其中,进程(Process)是计算机中的应用程序关于数据集合上的一次运行活动,是Windows系统进行资源分配和调度的基本单位,是Windows系统结构的基础。在早期面向进程设计的计算机结构中,进程是应用程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。也就是说,应用程序是指令、数据及其组织形式的描述,进程是应用程序的实体。进程防杀是保护用户的进程、Windows系统中重要的系统进程以及安全防护进程不被非法结束的一种方法,目前,常用的进程防杀是利用系统服务描述符表钩子(SSDTHOOK,SystemServicesDescriptorTableHOOK)技术。其中,SSDT是一将ring3,即应用层的Win32API和ring0,即内核层的内核API联系起来的描述符表,SSDT并不仅仅只包含一个庞大的函数地址索引表,还包含着一些其它有用的信息,例如,地址索引的基地址、服务函数个数等。通过修改SSDT的函数地址,可以对常用Windows函数及API进行钩子处理,从而实现对进程的过滤、监控。例如,基于主机的入侵防御系统(HIPS,Host-basedIntrusionPreventionSystem)软件、防毒软件软件、系统监控软件、注册表监控软件等软件利用SSDTHOOK技术防止安全防护进程被恶意应用程序的进程结束,从而有效防控恶意进程对用户的进程或系统进程的恶意攻击。但在Windows系统的内核层中,还提供了几个常用的结束进程的函数,例如,NtTerminateProcess函数、NtTerminateJobObject函数以及NtAssignProcessToJobObject函数,恶意应用程序可以通过直接调用这三个函数来结束目标进程。由于这三个函数处于内核层,目前的SSDTHOOK技术不能有效防止恶意应用程序通过调用Windows系统的内核层中结束进程的函数的方式结束进程,从而导致安全防护进程,例如金山毒霸相关的安全防护进程被恶意结束,使得金山毒霸的防护功能失效,恶意应用程序可以进行恶意攻击,导致Windows系统的安全防护效率较低,安全性不高。
技术实现思路
有鉴于此,本专利技术实施例提供一种防止进程被恶意结束的方法、装置及电子设备,提升系统的安全防护效率和安全性。为达到上述目的,本专利技术的实施例采用如下技术方案:第一方面,本专利技术实施例提供一种防止进程被恶意结束的方法,包括:通过反汇编内核层中结束进程的函数,确定所述内核层中结束进程的函数调用获取句柄对应内核对象的函数时的内存地址;在所述内核层中注入预先设置的钩子函数,在所述钩子函数监测到所述内核层中结束进程的函数发出进程结束请求时,钩住所述进程结束请求调用获取句柄对应内核对象的函数时的所述内存地址;利用钩住的所述内存地址,截获所述内核层中结束进程的函数用于结束进程的进程句柄的内核对象,依据截获的所述内核对象,获取进程路径信息;在获取的所述进程路径信息对应的进程为预先设置的安全防护进程时,拒绝所述内核层中结束进程的函数的进程结束请求。优选地,所述通过反汇编内核层中结束进程的函数,确定所述内核层中结束进程的函数调用获取句柄对应内核对象的函数时的内存地址包括:反汇编内核层中结束进程的函数的内存地址;遍历反汇编得到的内核层中结束进程的函数的内存地址,提取调用所述获取句柄对应内核对象的函数的汇编指令对应的内存地址,得到所述调用获取句柄对应内核对象的函数时的内存地址。优选地,所述内核层中结束进程的函数包括:NtTerminateProcess函数、NtTerminateJobObject函数和NtAssignProcessToJobObject函数。优选地,所述提取调用所述获取句柄对应内核对象的函数的汇编指令对应的内存地址包括:以反汇编获取的NtTerminateProcess函数的内存地址作为搜索源进行查找;找到预定位置的汇编指令对应的内存地址。优选地,所述汇编指令为进程句柄的汇编指令,具体值为0xFF,0x75,x0C,0xE8。优选地,所述获取句柄对应内核对象的函数为ObReferenceObjectByHandle函数。第二方面,本专利技术实施例提供一种防止进程被恶意结束的装置,包括:反汇编模块、钩子模块、截获模块以及进程处理模块,其中,反汇编模块,用于通过反汇编内核层中结束进程的函数,确定所述内核层中结束进程的函数调用获取句柄对应内核对象的函数时的内存地址;钩子模块,用于在所述内核层中注入预先设置的钩子函数,在所述钩子函数监测到所述内核层中结束进程的函数发出进程结束请求时,钩住所述进程结束请求调用获取句柄对应内核对象的函数时的所述内存地址;截获模块,用于利用钩住的所述内存地址,截获所述内核层中结束进程的函数用于结束进程的进程句柄的内核对象,依据截获的所述内核对象,获取进程路径信息;进程处理模块,用于在获取的所述进程路径信息对应的进程为预先设置的安全防护进程时,拒绝所述内核层中结束进程的函数的进程结束请求。优选地,所述反汇编模块包括:反汇编单元、遍历单元、提取单元以及获取单元,其中,反汇编单元,用于反汇编内核层中结束进程的函数的内存地址;遍历单元,用于遍历反汇编得到的内核层中结束进程的函数的内存地址;提取单元,用于提取调用所述获取句柄对应内核对象的函数的汇编指令对应的内存地址;获取单元,用于将提取单元提取的内存地址作为所述调用获取句柄对应内核对象的函数时的内存地址。优选地,所述内核层中结束进程的函数包括:NtTerminateProcess函数、NtTerminateJobObject函数和NtAssignProcessToJobObject函数。优选地,所述提取单元包括:搜索子单元以及提取子单元,其中,搜索子单元,用于以反汇编获取的NtTerminateProcess函数的内存地址作为搜索源进行查找;提取子单元,用于找到预定位置的汇编指令对应的内存地址作为所述调用获取句柄对应内核对象的函数时的内存地址。优选地,所述汇编指令为进程句柄的汇编指令,具体值为0xFF,0x75,x0C,0xE8。优选地,所述获取句柄对应内核对象的函数为ObReferenceObjectByHandle函数。第三方面,本专利技术实施例提供一种电子设备,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序本文档来自技高网
...
一种防止进程被恶意结束的方法、装置及电子设备

【技术保护点】
一种防止进程被恶意结束的方法,其特征在于,该方法包括:通过反汇编内核层中结束进程的函数,确定所述内核层中结束进程的函数调用获取句柄对应内核对象的函数时的内存地址;在所述内核层中注入预先设置的钩子函数,在所述钩子函数监测到所述内核层中结束进程的函数发出进程结束请求时,钩住所述进程结束请求调用获取句柄对应内核对象的函数时的所述内存地址;利用钩住的所述内存地址,截获所述内核层中结束进程的函数用于结束进程的进程句柄的内核对象,依据截获的所述内核对象,获取进程路径信息;在获取的所述进程路径信息对应的进程为预先设置的安全防护进程时,拒绝所述内核层中结束进程的函数的进程结束请求。

【技术特征摘要】
1.一种防止进程被恶意结束的方法,其特征在于,该方法包括:通过反汇编内核层中结束进程的函数,确定所述内核层中结束进程的函数调用获取句柄对应内核对象的函数时的内存地址;在所述内核层中注入预先设置的钩子函数,在所述钩子函数监测到所述内核层中结束进程的函数发出进程结束请求时,钩住所述进程结束请求调用获取句柄对应内核对象的函数时的所述内存地址;利用钩住的所述内存地址,截获所述内核层中结束进程的函数用于结束进程的进程句柄的内核对象,依据截获的所述内核对象,获取进程路径信息;在获取的所述进程路径信息对应的进程为预先设置的安全防护进程时,拒绝所述内核层中结束进程的函数的进程结束请求。2.根据权利要求1所述的方法,其特征在于,所述通过反汇编内核层中结束进程的函数,确定所述内核层中结束进程的函数调用获取句柄对应内核对象的函数时的内存地址包括:反汇编内核层中结束进程的函数的内存地址;遍历反汇编得到的内核层中结束进程的函数的内存地址,提取调用所述获取句柄对应内核对象的函数的汇编指令对应的内存地址,得到所述调用获取句柄对应内核对象的函数时的内存地址。3.根据权利要求2所述的方法,其特征在于,所述内核层中结束进程的函数包括:NtTerminateProcess函数、NtTerminateJobObject函数和NtAssignProcessToJobObject函数。4.根据权利要求3所述的方法,其特征在于,所述提取调用所述获取句柄对应内核对象的函数的汇编指令对应的内存地址包括:以反汇编获取的NtTerminateProcess函数的内存地址作为搜索源进行查找;找到预定位置的汇编指令对应的内存地址。5.根据权利要求4所述的方法,其特征在于,所述汇编指令为进程句柄的汇编指令,具体值为0xFF,0x75,x0C,0xE8。6.根据权利要求1至5任一项所述的方法,其特征在于,所述获取句柄对应内核对象的函数为ObReferenceObjectBy...

【专利技术属性】
技术研发人员:杨峰潘建军王云峰
申请(专利权)人:珠海市君天电子科技有限公司北京金山安全软件有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1