CN102982283B - 一种杀死受保护的恶意计算机进程的***及方法 - Google Patents
一种杀死受保护的恶意计算机进程的***及方法 Download PDFInfo
- Publication number
- CN102982283B CN102982283B CN201210491369.8A CN201210491369A CN102982283B CN 102982283 B CN102982283 B CN 102982283B CN 201210491369 A CN201210491369 A CN 201210491369A CN 102982283 B CN102982283 B CN 102982283B
- Authority
- CN
- China
- Prior art keywords
- function
- target process
- module
- killing
- kill
- 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
Landscapes
- Computer And Data Communications (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种杀死受保护的恶意计算机进程的***及方法,该***是通过Win32应用程序和驱动程序两个模块来实现的,Win32应用程序模块主要包括向进程窗口发WM_CLOSE消息、注入代码调用ExitProcess函数、调用TerminateProcess函数、与内核驱动程序通信、运行日志及报告;内核驱动程序模块包含与Win32应用程序通信、调用NtTerminateProcess函数、调用PspTerminateProcess函数、将进程代码的内存页面清0。同时本发明还公开了一种杀死受保护的恶意计算机进程的方法。由于使用了内核驱动程序与Win32应用程序相结合的技术,并尝试多种杀进程的方法,使得各种类型的恶意进程基本上都能杀死,从而阻止恶意程序对计算机的攻击及数据安全。
Description
技术领域
本发明涉及计算机安全技术领域,尤其涉及一种杀死受保护的恶意计算机进程的***及方法。
背景技术
随着Windows***内核技术细节的日益公开,越来越多的木马病毒程序也开始使用内核驱动程序来保护自身的进程。这一类进程,在win32应用层使用任务管理器是无法杀掉的。受内核驱动程序保护的恶意进程,也只能通过内核驱动技术来杀死。
在Windows XP以后的视窗***中,提供了几个***工具来管理***中的进程,常见的有任务管理器、taskkill.exe、net.exe等,以管理员身份登录***后,就能用这些工具来对***的进程进行管理,例如对各种进程进行“结束任务”操作,也即是杀死进程。但net.exe工具只能结束***服务进程,Windows***自带的任务管理器和taskkill.exe,只能杀死普通进程,对于受保护的恶意进程,却无能为力。
Windows 2000以后的视窗***中,提供了一个ntsd.exe程序,该程序是一个***调试工具,功能比较强大。使用适当的命令行参数,能杀死***中绝大多数的进程,其杀进程能力比任务管理器、taskkill.exe和net.exe要高。但ntsd.exe***调试工具仍然不能杀死受内核驱动保护的进程。
发明内容
本发明的目的是为了克服现有技术的缺陷,提供一种杀死受保护的恶意计算机进程的***及方法,通过该发明便于阻止内核中的恶意进程对计算机进行攻击。
一种杀死受保护的恶意计算机进程的***,是通过Win32应用程序和驱动程序两个模块来实现的。
Win32应用程序模块包括:
向进程窗口发WM_CLOSE消息的模块,其用于向目标进程窗口发送 WM_CLOSE消息使其终止运行;
注入代码调用ExitProcess函数的模块,其用于向目标进程注入代码并调用ExitProcess函数使其终止运行;
调用TerminateProcess函数的模块,其用于调用Windows***提供的API函数TerminateProcess来使目标进程退出;
与内核驱动程序通信的模块,其用于向内核驱动程序发送目标进程信息并接收驱动程序的反馈信息;
运行日志及报告的模块,其用于记录程序的运行日志并生成报告以供用户阅读;
内核驱动程序模块包括:
与Win32应用程序通信的模块,其用于负责接收Win32应用程序传入的目标进程的ID,并且在操作结束后再将结果反馈给Win32应用程序;
调用NtTerminateProcess函数的模块,其用于使用NtTerminateProcess函数来杀死进程;
调用PspTerminateProcess函数的模块,其用于使用更底层的内核函数PspTerminateProcess来杀死进程;
将进程代码的内存页面清0的模块,其用于使用将存放有目标进程运行代码的内存页面清0的方法来杀死进程。
如果完成了对目标进程的杀死操作,就立刻反馈给运行日志及报告的模块,不必再往下执行了。
如果是在驱动中完成的杀进程操作,那么还需要通过与Win32应用程序通信的模块将信息反馈到Win32应用层。
本发明还提供了一种杀死受保护的恶意计算机进程的方法来进行杀死恶意进程。
本发明技术方案带来的有益效果:通过本发明可灭杀各种顽固的木马病毒进程。由于使用了内核驱动程序与Win32应用程序相结合的技术,并尝试多种杀进程的方法,使得各种类型的恶意进程基本上都能杀死,从而阻止恶意程序对计算机的攻击及数据安全,特别是能杀死内核驱动程序保护的恶意进程。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付 出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本发明的***结构示意图;
图2是本发明的方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了一种杀死受保护的恶意计算机进程的***,该***是通过Win32应用程序和驱动程序两个模块来实现的,两个模块的功能结构图如图1所示。
Win32应用程序模块主要包括5项功能,各项功能分别完成以下工作:
向进程窗口发WM_CLOSE消息:向目标进程窗口发送WM_CLOSE消息使其终止运行。
注入代码调用ExitProcess函数:向目标进程注入代码并调用ExitProcess函数使其终止运行。
调用TerminateProcess函数:调用Windows***提供的API函数TerminateProcess来使目标进程退出。
与内核驱动程序通信:向内核驱动程序发送目标进程信息并接收驱动程序的反馈信息。
运行日志及报告:记录程序的运行日志并生成报告以供用户阅读。
而内核驱动程序模块包含4项功能,各项功能分别完成下面的工作:
与Win32应用程序通信:主要负责接收Win32应用程序传入的目标进程的ID,并且在操作结束后再将结果反馈给Win32应用程序。
调用NtTerminateProcess函数:主要使用NtTerminateProcess函数来杀死进程。
调用PspTerminateProcess函数:使用更底层的内核函数PspTerminateProcess来杀死进程。
将进程代码的内存页面清0:使用将存放有目标进程运行代码的内存页面清0的方法来杀死进程。
本发明的方法流程图如图2所示:
从流程图中可以看出,本发明首先取得恶意进程的ID,然后查找该进程是否存在主窗口,如果目标进程有主窗口的话,向进程主窗口发送WM_CLOSE消息可以使其主窗口关闭并终止运行;如果目标进程没有主窗口,目标进程已经注册成为***服务进程,那么向目标进程注入代码并调用ExitProcess函数,也能达到杀死目标进程的目的。
如果上面两种方法都无法杀死目标进程,或者不适用于该目标进程。那么还可以使用调用TerminateProcess函数的方法来杀死目标进程,这是在Win32应用层杀死目标进程的终极方法。如果通过上述3种方法都无法杀死目标进程,那么该进程很可能已经受到内核驱动程序的保护。对于这种进程,也只能在内核驱动程序中去杀死它。与内核驱动程序通信这项功能可以将目标进程的ID传到内核驱动程序中,由内核驱动程序来完成杀进程操作。
当内核驱动程序获得进程ID后,可以通过调用PsLookupProcessByProcessId函数得到进程的EPROCESS对象,然后同通过调用ObOpenObjectByPointer函数得到进程的内核句柄,最后调用NtTerminateProcess函数杀死进程。NtTerminateProcess函数是内核杀进程的常规用法。如果保护目标进程的驱动对NtTerminateProcess函数进行了修改挂钩,那么用上述的方法也无法杀死目标进程。这时可以采用调用PspTerminateProcess函数的方法来杀死目标进程,得到进程的EPROCESS对象后就能调用此函数,这是一种比调用NtTerminateProcess函数更底层的方法。
但是如果保护目标进程的驱动连PspTerminateProcess函数也做了修改挂钩,那么还可以用将存放有目标进程代码的内存页面清0的方法来杀死目标进程。该方法主要通过PsLookupProcessByProcessId函数得到目标进程的EPROCESS对象,然后调用KeStackAttachProcess函数切换到进程目标进程的地址空间,再修改CR0寄存器去掉存放有目标进程代码的内存页面的写保护,最后调用RtlZeroMemory函数将目标进程代码存放的内存页面清0来达到杀死目标进程的目的。这种方法中,没有调用到***中任何结束进程或线程的函数,因此即使保护目标进程的驱动程序在PspTerminateProcess函数做了手脚来保护目标进程,也无法阻挡这种杀进程的方法。
在流程图中还可以看出,无论在哪一步中,如果完成了对目标进程的杀死 操作,就立刻反馈给日志及报告模块,不必再往下执行了。如果是在驱动中完成的杀进程操作,那么还需要通过通信模块将信息反馈到Win32应用层。
通过本发明可灭杀各种顽固的木马病毒进程。由于使用了内核驱动程序与Win32应用程序相结合的技术,并尝试多种杀进程的方法,使得各种类型的恶意进程基本上都能杀死,从而阻止恶意程序对计算机的攻击及数据安全。
在驱动程序中,还可以恢复钩子后再杀死受保护的进程。但这种方法还要遍历***的各种调用函数,找到被挂钩的地点才能恢复钩子,实现起来更加复杂,并容易导致***出错,因为一些有益的软件也会采用挂钩的办法来实现其某些功能。
以上对本发明实施例所提供的一种杀死受保护的恶意计算机进程的方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (6)
1.一种杀死受保护的恶意计算机进程的***,其特征在于,该***是通过Win32应用程序和驱动程序两个模块来实现的,
Win32应用程序模块包括:
向进程窗口发WM_CLOSE消息的模块,其用于向目标进程窗口发送WM_CLOSE消息使其终止运行;
注入代码调用ExitProcess函数的模块,其用于向目标进程注入代码并调用ExitProcess函数使其终止运行;
调用TerminateProcess函数的模块,其用于调用Windows***提供的API函数TerminateProcess来使目标进程退出;
与内核驱动程序通信的模块,其用于向内核驱动程序发送目标进程信息并接收驱动程序的反馈信息;
运行日志及报告的模块,其用于记录程序的运行日志并生成报告以供用户阅读;
内核驱动程序模块包括:
与Win32应用程序通信的模块,其用于负责接收Win32应用程序传入的目标进程的ID,并且在操作结束后再将结果反馈给Win32应用程序;
调用NtTerminateProcess函数的模块,其用于使用NtTerminateProcess函数来杀死进程;
调用PspTerminateProcess函数的模块,其用于使用更底层的内核函数PspTerminateProcess来杀死进程;
将进程代码的内存页面清0的模块,其用于使用将存放有目标进程运行代码的内存页面清0的方法来杀死进程。
2.如权利要求1所述的***,其特征在于,完成了对目标进程的杀死操作,就立刻反馈给运行日志及报告的模块,不必再往下执行了。
3.如权利要求1所述的***,其特征在于,如果是在驱动中完成的杀进程操作,那么还需要通过与Win32应用程序通信的模块将信息反馈到Win32应用层。
4.一种杀死受保护的恶意计算机进程的方法,其特征在于,该方法的具体流程为:首先取得恶意进程的ID,然后查找该进程是否存在主窗口,如果目标进程有主窗口的话,向进程主窗口发送WM_CLOSE消息使其主窗口关闭并终止运行;如果目标进程没有主窗口,目标进程已经注册成为***服务进程,那么向目标进程注入代码并调用ExitProcess函数,也能达到杀死目标进程的目的;
如果上面两种方法都无法杀死目标进程,或者不适用于该目标进程,那么使用调用TerminateProcess函数的方法来杀死目标进程,这是在Win32应用层杀死目标进程的终极方法;
如果通过上述方法都无法杀死目标进程,那么该进程很可能已经受到内核驱动程序的保护,对于这种进程,也只能在内核驱动程序中去杀死它;与内核驱动程序通信这项功能将目标进程的ID传到内核驱动程序中,由内核驱动程序来完成杀进程操作;
当内核驱动程序获得进程ID后,可以通过调用PsLookupProcessByProcessId函数得到进程的EPROCESS对象,然后同通过调用ObOpenObjectByPointer函数得到进程的内核句柄,最后调用NtTerminateProcess函数杀死进程;如果保护目标进程的驱动对NtTerminateProcess函数进行了修改挂钩,那么用上述的方法也无法杀死目标进程,这时采用调用PspTerminateProcess函数的方法来杀死目标进程,得到进程的EPROCESS对象后就能调用此函数,这是一种比调用NtTerminateProcess函数更底层的方法;
但是如果保护目标进程的驱动连PspTerminateProcess函数也做了修改挂钩,则用将存放有目标进程代码的内存页面清0的方法来杀死目标进程。
5.如权利要求4所述的方法,其特征在于,将存放有目标进程代码的内存页面清0的方法是通过PsLookupProcessByProcessId函数得到目标进程的EPROCESS对象,然后调用KeStackAttachProcess函数切换到进程目标进程的地址空间,再修改CR0寄存器去掉存放有目标进程代码的内存页面的写保护,最后调用RtlZeroMemory函数将目标进程代码存放的内存页面清0来达到杀死目标进程的目的。
6.如权利要求4或5或所述的方法,其特征在于,在驱动程序中,还能够通过恢复钩子后再杀死受保护的进程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210491369.8A CN102982283B (zh) | 2012-11-27 | 2012-11-27 | 一种杀死受保护的恶意计算机进程的***及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210491369.8A CN102982283B (zh) | 2012-11-27 | 2012-11-27 | 一种杀死受保护的恶意计算机进程的***及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102982283A CN102982283A (zh) | 2013-03-20 |
CN102982283B true CN102982283B (zh) | 2015-07-22 |
Family
ID=47856287
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210491369.8A Active CN102982283B (zh) | 2012-11-27 | 2012-11-27 | 一种杀死受保护的恶意计算机进程的***及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102982283B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103268447B (zh) * | 2013-05-10 | 2016-03-02 | 广东欧珀移动通信有限公司 | 一种防钓鱼方法及*** |
CN103823710B (zh) * | 2014-03-06 | 2017-04-12 | 北京京东尚科信息技术有限公司 | 一种在Windows***中对Java虚拟机进程的管理方法及*** |
CN104809392A (zh) * | 2015-04-29 | 2015-07-29 | 浪潮电子信息产业股份有限公司 | 一种基于Windows进程的***性保护方法及装置 |
RU2589862C1 (ru) | 2015-06-30 | 2016-07-10 | Закрытое акционерное общество "Лаборатория Касперского" | Способ обнаружения вредоносного кода в оперативной памяти |
CN105760787B (zh) * | 2015-06-30 | 2019-05-31 | 卡巴斯基实验室股份制公司 | 用于检测随机存取存储器中的恶意代码的***及方法 |
CN105022956B (zh) * | 2015-08-14 | 2018-11-09 | 中国科学院计算技术研究所 | 一种抵御代码重用攻击的方法 |
CN105335651B (zh) * | 2015-10-22 | 2018-09-18 | 成都卫士通信息产业股份有限公司 | 一种基于Linux操作***的进程防护方法 |
CN105224864B (zh) * | 2015-11-04 | 2018-05-04 | 中国科学院计算技术研究所 | 一种抵御代码重用攻击的工作进程随机化方法及*** |
CN106815523B (zh) * | 2015-11-27 | 2019-10-15 | 珠海豹趣科技有限公司 | 一种恶意软件防御方法及装置 |
CN106886691B (zh) * | 2015-12-15 | 2020-01-14 | 珠海豹趣科技有限公司 | 用于结束进程操作的拦截方法、装置和电子设备 |
CN106156610B (zh) * | 2016-06-29 | 2019-02-12 | 珠海豹趣科技有限公司 | 一种进程路径获取方法、装置和电子设备 |
CN106127053B (zh) * | 2016-06-30 | 2018-11-20 | 北京金山安全软件有限公司 | 恶意进程结束方法及装置 |
CN106203115B (zh) * | 2016-07-11 | 2019-04-09 | 珠海豹趣科技有限公司 | 一种应用程序的防护方法、装置及电子设备 |
CN108399087A (zh) * | 2018-03-22 | 2018-08-14 | 北京金山安全软件有限公司 | 一种进程关闭的方法、装置及电子设备 |
CN108446553B (zh) * | 2018-03-22 | 2021-11-12 | 北京金山安全软件有限公司 | 一种进程保护的方法、装置及电子设备 |
CN110309647B (zh) * | 2019-06-28 | 2022-02-25 | 北京乐蜜科技有限责任公司 | 针对应用程序的处理方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1350228A (zh) * | 2001-12-04 | 2002-05-22 | 上海复旦光华信息科技股份有限公司 | Windows nt进程自动保护*** |
CN102214134A (zh) * | 2010-04-12 | 2011-10-12 | 腾讯科技(深圳)有限公司 | 一种计算机进程终止***和方法 |
-
2012
- 2012-11-27 CN CN201210491369.8A patent/CN102982283B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1350228A (zh) * | 2001-12-04 | 2002-05-22 | 上海复旦光华信息科技股份有限公司 | Windows nt进程自动保护*** |
CN102214134A (zh) * | 2010-04-12 | 2011-10-12 | 腾讯科技(深圳)有限公司 | 一种计算机进程终止***和方法 |
Non-Patent Citations (2)
Title |
---|
基于WIN杀死进程的设计技术研究;陈平等;《数字技术与应用》;20120428(第1期);全文 * |
本书编写组.第12章 进程和线程.《Windows API函数参考手册》.人民邮电出版社,2002,601-603. * |
Also Published As
Publication number | Publication date |
---|---|
CN102982283A (zh) | 2013-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102982283B (zh) | 一种杀死受保护的恶意计算机进程的***及方法 | |
CN102968352B (zh) | 进程监控及多级恢复***和方法 | |
CN101616008B (zh) | 保护网络应用数据的方法和*** | |
US20150363598A1 (en) | Detection of malicious scripting language code in a network environment | |
CN104995630A (zh) | 基于动态污点的安全性扫描 | |
DE112017004843T5 (de) | Technologien für deterministischen Codeflussintegritätsschutz | |
CN113867913A (zh) | 面向微服务的业务请求处理方法、装置、设备及存储介质 | |
CN104506495A (zh) | 一种智能化网络apt攻击威胁分析方法 | |
CN110728575A (zh) | 一种电力交易平台web安全深度监控方法 | |
CN111831275B (zh) | 一种编排微场景剧本的方法、服务器、介质及计算机设备 | |
CN109413046A (zh) | 一种网络防护方法、***及终端设备 | |
CN107912064A (zh) | 壳代码检测 | |
CN113779578B (zh) | 移动端应用的智能混淆方法和*** | |
DE112019000594T5 (de) | Injizieren von Abfangcode in einen Ausführungspfad eines ein Programm ausführenden Prozesses, um einen Abfangadressbereich zu erzeugen, um möglichen schädlichen Programmcode zu erkennen | |
CN106415581A (zh) | 用于追踪和检测恶意软件的***和方法 | |
CN110602044A (zh) | 一种网络威胁分析方法和*** | |
CN111885021A (zh) | 基于传输协议的拟态通信方法、通信架构及可读存储介质 | |
CN110830500B (zh) | 网络攻击追踪方法、装置、电子设备及可读存储介质 | |
Zhang et al. | Your exploit is mine: instantly synthesizing counterattack smart contract | |
CN105488399A (zh) | 一种基于程序关键字调用序列的脚本病毒检测方法及*** | |
EP2600271B1 (en) | Device for right managing web data, recording medium for performing method for right managing web data on computer, and device and method for providing right management information | |
Tanimoto et al. | Risk Assessment Quantification of Ambient Service | |
CN103944896A (zh) | 智能电网安全防护*** | |
CN202720652U (zh) | 一种用于信息安全防护的双机计算机*** | |
EP3040895A1 (en) | System and method for protecting a device against return-oriented programming attacks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
PP01 | Preservation of patent right |
Effective date of registration: 20220422 Granted publication date: 20150722 |
|
PP01 | Preservation of patent right |