计算机内存病毒监控和带毒运行方法技术

技术编号:2878276 阅读:196 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种计算机内存查杀毒方法,包括以下步骤:病毒分析,找到病毒调用的关键的操作系统功能;拦截对操作系统功能的调用;查毒,当所述拦截的操作系统功能被调用时,对调用这个功能的代码进行分析,识别出病毒;杀毒,对于病毒的处理,如果是病毒,则根据病毒的类型并结合用户的选择,决定是将病毒杀掉,还是让病毒失败,从而使染毒文件继续运行;恢复,如果需要,恢复原来的调用环境,调用原来的系统功能。(*该技术在2021年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及计算机系统的带毒运行技术,更具体地说,涉及一种监控在计算机平台上已运行(在内存中)的病毒(包括蠕虫、木马、恶意程序等)和让带毒文件运行而不激活病毒的方法。该方法可以阻止带毒的应用程序中的病毒部分运行,而不影响宿主应用程序的功能。
技术介绍
随着计算机的广泛使用,计算机病毒的数量和种类也越来越多,它能清除用户的重要数据,甚至破坏计算机硬件,给计算机用户带来极大的危害。清除和防治病毒的方法目前主要有两种,一种是静态扫描,通常就是启动杀毒软件,对本计算机或整个网络进行查杀毒;另一种方法是实时监控,它的基本原理是,当用户要操作某个文件时,该操作被杀毒软件捕获,杀毒软件对这个文件进行查杀毒。但是这两种方法都是基于对文件的扫描来进行查杀毒的,已经越来越难以满足查杀毒的需要,这主要有两点原因首先,现在有很多压缩工具、文件捆绑工具,这些工具改变了文件应有的结构,同时也将病毒隐藏起来,所以基于对文件的查杀就无法进行;其次,如果在杀毒软件运行之前病毒已经运行,现有的杀毒软件将无法找到病毒源,无法阻止病毒的运行。另外,目前有一种内存查毒的方法,但是也属于静态扫描。也就是说,它是在用户启动杀毒软件并要求扫描内存时,才对内存进行查杀。它存在两个问题一是扫描时间较长,杀掉了一个病毒,可能另一个又运行起来了;二是它可能无法杀毒,因为系统出于安全性考虑,将不会允许对某些进程的操作。但是,无论病毒在文件中存在的位置或形式如何,它要运行则必然需要装入到计算机的内存中,而且它要传染或破坏,总要调用操作系统的一些功能。如果我们能够拦截住这些功能调用,在病毒调用这些功能时查找病毒将非常准确,而且非常快。此时,我们将可以有两种选择,使病毒终止或者使病毒失败,从而让宿主程序继续运行,也就是让程序带毒运行。
技术实现思路
针对上述目前杀毒软件中存在的问题,本专利技术的目的在于提供一种在病毒已经运行但尚未进行下次传染或破坏之前能够查到病毒并将其杀掉、以及允许染毒文件带毒运行而不激活病毒的计算机内存查杀毒方法。按照本专利技术的计算机内存查杀毒方法包括以下步骤病毒分析,找到病毒调用的关键的操作系统功能;拦截对操作系统功能的调用;查毒,当所述拦截的操作系统功能被调用时,对调用这个功能的代码进行分析,识别出病毒;杀毒,对于病毒的处理,如果是病毒,则根据病毒的类型并结合用户的选择,决定是将病毒杀掉,还是让病毒失败,从而使染毒文件继续运行;恢复,如果需要,恢复原来的调用环境,调用原来的系统功能。根据本专利技术的内存查杀毒方法,无论病毒在文件中存在的位置或形式如何,在其运行装入到计算机的内存时,以及在其调用操作系统的一些功能传染或破坏时,都能够拦截住这些功能调用,非常准确而且非常快地将病毒查杀,使病毒终止或者使病毒失败,从而让宿主程序继续运行,也就是让程序带毒运行。附图说明通过以下借助附图的详细描述,将会更容易地理解本专利技术,其中图1是根据本专利技术优选实施例的计算机内存查杀毒方法的监控过程建立的流程图;和图2是根据本专利技术优选实施例的病毒监控处理过程的流程图。具体实施例方式下面将结合附图详细描述本专利技术的优选实施例。在此应该指出的是,根据本专利技术的内存查杀毒方法不仅适用于WInDOWS 9X(包括WINDOWS95、WINDOWS98、WINDOWS ME)操作系统,而且适用于其它的诸如WINDOWS NT(包括WINDOWS NT、WINDOWS2000)之类的操作系统。该方法能够在各种平台上实现内存病毒的实时查杀,并能让染毒文件带毒运行,而不激活病毒。下面将以WINDOWS 9X平台为例具体说明本专利技术的计算机内存查杀毒方法的各操作步骤。对于WINDOWS系统而言,它的系统功能调用通过API函数实现,所以下面的叙述中将使用API函数代替系统功能调用。图1是根据本专利技术优选实施例的计算机内存查杀毒方法的监控过程建立的流程图。首先,在步骤S11,对病毒进行分析。在该步骤中,对各种能在WINDOWS平台上运行的病毒分析进行,找到它们要调用的两类函数,一类是在第一次运行时判断其是否能够初始化时所要调用的函数,如果让该函数返回病毒不希望的结果,则病毒将不再运行,而是运行宿主,从而做到带毒运行;另一类是在它正常运行时必须要调用的函数,通过拦截这个函数,能够在病毒进行下次传染或破坏之前将其查到并杀掉。这两类函数对于某个病毒而言,可能各需一个,也可能需要几个。将这些信息组合在一起,建立一个数据库,称为病毒库。它包括调用的函数名称、病毒的特征描述、病毒的处理方法等。例如,对于CODERED病毒,它要启动,就必须调用GetProcAddressA这个API函数,如果在它调用这个API函数失败时,也就说,函数返回空时,它将放弃运行,也就不会感染其它计算机系统或对本计算机系统进行破坏。另外,在正常运行过程中,它要传染其它计算机系统和文件,则必然要调用socket函数。然后,在步骤S12,运行病毒监控程序,准备好所有的要拦截API函数。这些函数是在步骤S11中分析得到的病毒启动时和正常运行期间所需要调用的系统功能。接着,在步骤S13,拦截上述分析得到的函数,使系统功能调用函数指向实时病毒监控处理过程。对于WINDOWS来说,它的每一个进程的地址空间是独立的。而要查杀所有进程中的病毒,则需要拦截所有进程的函数调用。为此,需要启动一个特意编写的设备驱动程序,该设备驱动程序的作用是使对API的拦截对所有的进程起作用,包括现有的和将来要产生的。通过对这个设备驱动程序的调用,拦载所有上述分析过程中得到的函数,并为这些函数调用提供一个统一的处理程序,将函数标识和调用者代码传给处理程序,以备查杀毒用。在完成所有的拦截操作后,该设备驱动程序就不再起任何作用。具体地说,是先将要拦截API函数的处理程序初始化,以准备接收API函数的调用,然后将要拦截的API函数的入口代码一一加以修改,使其指向预定的代码,这段代码的作用是将API的标识和调用者的代码地址压入栈中,然后调用API函数处理程序,待API函数处理程序返回后,再运行原来的被取代的指令,然后转到该API函数的后续指令执行。例如某个API的入口代码为PUSH EBPMOV EBP,ESPADD ESP,200后续指令这是非常常见的API入口指令,我们将这段指令保存到别处,然后将它修改为JMP XXXXXXXX处是一段处理程序,它的代码如下PUSH API标识CALL API处理程序ADD ESP,4PUSH EBPMOV EBP,ESPADD ESP,200JMP 后续指令到此,已经建立了对病毒进行实时监控的环境。也就是说,当一个染毒文件运行时,将会调用某个上述已经拦截的函数,这时,通过在步骤S13中的处理,将会进入到预定的处理程序,即,进入病毒监控过程。下面,将参照图2所示的病毒监控过程详细描述对系统功能调用的处理,即,对带毒程序所调用的函数的处理。首先,当在步骤S21一段代码调用被拦截的系统调用时,则在步骤S22保存当前的调用环境。接着,在步骤S23,将函数的调用者与病毒库进行比较,从而知道是什么病毒在运行,并标识这是病毒初始运行,也就是说宿主还未运行。另外一种情况是,如果一个病毒在根据本专利技术的预定的处理程序运行之前已经运行,也就是说宿主已运行,并且本文档来自技高网
...

【技术保护点】
一种计算机内存查杀毒方法,包括以下步骤: 病毒分析,找到病毒调用的关键的操作系统功能,建立病毒库; 拦截对操作系统功能的调用; 查毒,当所述拦截的操作系统功能被调用时,对调用这个功能的代码进行分析,识别出病毒; 杀毒,对于病毒的处理,如果是病毒,则根据病毒的类型并结合用户的选择,决定是将病毒杀掉,还是让病毒失败,从而使染毒文件继续运行;以及 恢复,如果需要,恢复原来的调用环境,调用原来的系统功能。

【技术特征摘要】

【专利技术属性】
技术研发人员:王耀华
申请(专利权)人:北京瑞星科技股份有限公司
类型:发明
国别省市:11[中国|北京]

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

1