删除正在运行中的病毒的方法技术

技术编号:2915596 阅读:232 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种用于删除正在运行的病毒文件的方法,包括:拦截由操作系统内核导出的用于文件的权限验证的函数;发现正在运行的病毒文件;当有对于该病毒文件的打开请求时,由文件系统调用所述用于文件的权限验证的函数;当确定该文件打开请求是由指定的杀毒软件提出并将删除该病毒文件时,修改所述用于文件的权限验证的函数的参数或返回值,使得文件系统成功完成文件的权限验证,以允许该指定的杀毒软件删除该病毒文件,从而清除病毒。

【技术实现步骤摘要】

本专利技术涉及一种删除病毒文件的方法。
技术介绍
当计算机已经被病毒程序感染以后,病毒程序处于运行状态,这时正在运行的文件是受操作系统保护的,是禁止删除的。例如,当打开一个WORD文件时,如果用户试图删除该文件,系统会提示文件被占用而无法删除。这就造成查杀病毒时无法清除正在运行的病毒的问题。以往的方法都是重新启动计算机,在病毒运行之前删除它,这要求用户重新启动计算机,而在某些服务器上并不是随时都能重启的,这就造成了杀毒不彻底的情况,还有些病毒本身做了自我保护,它的进程不能被直接结束。所以要想彻底根除病毒,就要删除病毒文件。计算机里的文件有访问权限,如执行方式、共享读权限、独占读权限、共享写权限、独占写权限、删除权限,这里“独占”的意思是一个用户打开时其他用户就不能打开了。当一个文件被访问时,首次打开这个文件时可以赋予这个文件一些权限(如共享读权限,独占写权限或者删除权限),其中以执行方式打开的文件是由系统以可执行的方式打开的,没有删除权限的。所以当病毒在运行的时候,如果以删除权限打开它就会失败,文件就无法删除。因此,目前对于正在运行的病毒文件尚不能即时删除。-->
技术实现思路
本专利技术的目的在于提供一种可删除正在运行的病毒的方法,达到彻底清除病毒的目的。根据本专利技术,提供一种用于删除正在运行的病毒文件的方法,包括:拦截由操作系统内核导出的用于文件的权限验证的函数;发现正在运行的病毒文件;当有对于该病毒文件的打开请求时,由文件系统调用所述用于文件的权限验证的函数;当确定该文件打开请求是由指定的杀毒软件提出并将删除该病毒文件时,修改所述用于文件的权限验证的函数的参数或返回值,使得文件系统成功完成文件的权限验证,以允许该指定的杀毒软件删除该病毒文件。在本专利技术的实施例中,所述用于文件的权限验证的函数是由Windows NT内核导出的以下三个函数:IoCheckShareAccess、MmFlushImageSection和SeAccessCheck。在本专利技术的实施例中,所述拦截步骤包括:修改文件FAT.SYS和NTFS.SYS被加载后的内存镜像的引入表,使其指向指定的权限验证驱动。在本专利技术的实施例中,所述用于文件的权限验证的函数的参数或返回值被修改成说明文件的权限验证成功的状态。通过在杀毒软件中采用本专利技术的方法,可以强制删除正在运行的病毒文件,提高杀毒软件的杀毒能力。以下结合附图进一步描述本专利技术的实施例。附图说明图1是根据本专利技术的实施例进行强制杀毒的流程图;-->图2是根据本专利技术的实施例进行强制杀毒的实例示意图。具体实施方式图1和图2示出本专利技术的一个优选实施例。以下参照图1和图2,描述在该实施例删除正在运行的病毒文件的过程。(1)首先拦截如下三个函数:IoCheckShareAccess,MmFlushImageSection,SeAccessCheck当文件被打开时,文件系统会对这个文件打开请求进行权限验证,只有权限验证通过的才可以打开文件.一个文件首次被打开时,Windows NT系统会调用由其内核的IoSetShareAccess,IoUpdateShareAccess这两个函数来设置文件初始权限,这两个函数是美国微软公司公开的函数,本领域技术人员都可以查看到函数的具体说明。这两个函数主要是用于在文件打开时设置文件的共享权限和更新权限。当文件再次被打开时,系统会调用IoCheckShareAccess,MmFlushImageSection,SeAccessCheck三个函数进行文件权限的验证,这三个函数都是由WINDOWS NT内核导出的函数,也是微软公司公开的函数。本领域技术人员同样可以在微软公司的网站上查找这三个函数的定义和相关说明。IoCheckShareAccess是用来验证共享权限是否合法,它要去调用SeAccessCheck函数去获得文件在第一次打开时所设置的权限,如果合法文件打开操作则继续,否则文件打开操作就会被中止。MmFlushImageSection是用来将在内存中的文件数据写入到磁盘上的一个函数,它是整个验证过程的辅助函数,文件在以写权限和删除权限打开时都要调用这个函数,以实现数据同步,避免有损坏的文件发生。如果这个函数调用失败,也会迫使文件权限验证中止。这三个函数都返回了正确的结果,文件打开的验证操作就成功了。-->基于上述情况,在该实施例中对上述三个函数进行拦截,通过修改函数的参数或返回值来达到权限验证合法化的目的。这些函数的具体拦截方法是:修改FAT.SYS、NTFS.SYS文件被加载后的内存镜像的引入表,使其指向用户指定的权限验证驱动,这样当文件打开时,就可以拦截到这三个函数的调用,在判断是不是用户指定的杀毒程序要删除病毒文件(判断方法是:如果是用户自己指定的杀毒程序就进行返回值或参数修改),如果是用户指定的杀毒软件的杀毒请求,就修改这三个函数的返回值或参数,以达到绕过文件系统的权限验证的目的。(2)用户执行查毒扫描或文件监控发现有文件打开操作。(3)由病毒扫描程序(如Rav.exe)调用引擎扫描病毒文件(如c:\\virus.exe),如图2所示。(4)引擎调用文件系统(FAT.SYS或NTFS.SYS)打开文件,进行文件扫描,调用磁盘系统读取文件(c:\\virus.exe)的数据,看是不是病毒,如果是病毒则根据用户查毒设置进行操作,如果是删除病毒文件,则调用文件系统以删除方式打开病毒文件(c:\\virus.exe),准备删除,那么将会触犯文件系统的文件权限验证机制。(5)当有文件打开请求时,文件系统调用IoCheckShareAccess,MmFlushImageSection,SeAccessCheck这三个函数进行文件权限验证,由于这三个函数都已经被拦截了,所以可以对其返回值和参数进行修改。(6)检查是不是用户指定的杀毒软件打开病毒文件并将删除病毒文件;(7)由修改权限验证模块修改如上三个函数的参数或返回值,使文件的权限验证成功,从而可以绕过文件系统的权限控制来达到权限验证合法化的目的,由此允许删除磁盘上的病毒文件,以便成功地彻底清除病毒。-->本实施例适用于WINDOWS NT系统,包括64位系统。在其它的操作系统中存在与上述三个函数类似的用于文件的权限验证的函数。应用本专利技术的方法同样可以达到删除正在运行的病毒文件之效果。以上实施例是用于对本专利技术做示例性说明,而不是对于本专利技术的限定。本领域技术人员可以采用公知技术常识,以其它可替换的手段对本专利技术进行相应的修改和变型以适用于不同的应用。本专利技术的保护范围应该以权利要求书的限定为准。-->本文档来自技高网...

【技术保护点】
一种用于删除正在运行的病毒文件的方法,包括: 拦截由操作系统内核导出的用于文件的权限验证的函数; 发现正在运行的病毒文件; 当有对于该病毒文件的打开请求时,由文件系统调用所述用于文件的权限验证的函数; 当确定该文件打 开请求是由指定的杀毒软件提出并将删除该病毒文件时,修改所述用于文件的权限验证的函数的参数或返回值,使得文件系统成功完成文件的权限验证,以允许该指定的杀毒软件删除该病毒文件。

【技术特征摘要】
1、一种用于删除正在运行的病毒文件的方法,包括:拦截由操作系统内核导出的用于文件的权限验证的函数;发现正在运行的病毒文件;当有对于该病毒文件的打开请求时,由文件系统调用所述用于文件的权限验证的函数;当确定该文件打开请求是由指定的杀毒软件提出并将删除该病毒文件时,修改所述用于文件的权限验证的函数的参数或返回值,使得文件系统成功完成文件的权限验证,以允许该指定的杀毒软件删除该病毒文件。2、根据权利要求1所述的方法,其中,所述用于文件的...

【专利技术属性】
技术研发人员:韩宇
申请(专利权)人:北京瑞星国际软件有限公司
类型:发明
国别省市:11[中国|北京]

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

1