公开/公告号CN101414329A
专利类型发明专利
公开/公告日2009-04-22
原文格式PDF
申请/专利权人 北京瑞星国际软件有限公司;
申请/专利号CN200710162445.X
发明设计人 韩宇;
申请日2007-10-15
分类号G06F21/00(20060101);
代理机构72002 永新专利商标代理有限公司;
代理人夏青
地址 100080 北京市中关村大街22号中科大厦1305室
入库时间 2023-12-17 21:49:12
法律状态公告日
法律状态信息
法律状态
2018-03-16
专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F21/56 变更前: 变更后: 申请日:20071015
专利权人的姓名或者名称、地址的变更
2016-05-25
专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F21/56 变更前: 变更后: 申请日:20071015
专利权人的姓名或者名称、地址的变更
2016-03-30
授权
授权
2010-12-15
实质审查的生效 IPC(主分类):G06F21/00 申请日:20071015
实质审查的生效
2010-05-19
专利申请权的转移 IPC(主分类):G06F21/00 变更前: 变更后: 登记生效日:20100413 申请日:20071015
专利申请权、专利权的转移
2009-04-22
公开
公开
查看全部
技术领域
本发明涉及一种删除病毒文件的方法。
背景技术
当计算机已经被病毒程序感染以后,病毒程序处于运行状态,这时正在运行的文件是受操作系统保护的,是禁止删除的。例如,当打开一个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位系统。
在其它的操作系统中存在与上述三个函数类似的用于文件的权限验证的函数。应用本发明的方法同样可以达到删除正在运行的病毒文件之效果。
以上实施例是用于对本发明做示例性说明,而不是对于本发明的限定。本领域技术人员可以采用公知技术常识,以其它可替换的手段对本发明进行相应的修改和变型以适用于不同的应用。本发明的保护范围应该以权利要求书的限定为准。
机译: 更新病毒删除数据的设备,用于分发病毒删除数据的设备,用于更新病毒删除数据的方法以及用于更新病毒删除数据的程序
机译: 删除影响内存的病毒的方法,用删除病毒的程序记录的计算机可读存储介质以及删除病毒的设备
机译: 删除影响内存的病毒的方法,用删除病毒的程序记录的计算机可读存储介质以及删除病毒的设备