一种文件解锁的方法及装置的制作方法

文档序号:6427266阅读:120来源:国知局
专利名称:一种文件解锁的方法及装置的制作方法
技术领域
本发明涉及计算机安全的技术领域,特别是涉及一种文件解锁的方法和一种文件解锁的装置。
背景技术
计算机病毒是指“编制者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序代码。计算机一旦染上病毒,计算机通常表现为其文件被增加、删出、改变名称或属性、移动到其它目录下,病毒对计算机文件的这些操作,可能会导致正常的程序无法运行、计算机操作系统崩溃、计算机被远程控制、用户信息被盗用等一系列的问题。为了保证计算机的安全运行,需要对计算机中感染病毒的文件进行病毒查杀,以防止和清除病毒的破坏。在安全软件领域,针对染毒计算机文件的“删除”与“反删除”是安全软件和恶意程序(计算机病毒)对抗的永恒主题之一。现有技术中的病毒,往往通过文件只读属性限制等手段给染毒文件加上了加密锁,采用常规手段无法破解加密锁即无法删除染毒文件,这些手段阻止杀毒软件查杀染毒文件。安全软件查杀病毒的过程,可以理解为对染毒文件进行解锁和粉碎。现有安全软件,对染毒文件的解锁和粉碎手段单一,无法破除染毒文件设置的层层保护,对抗能力不强。传统安全软件厂商只解决了部分“反删除”问题,在操作系统内核态的攻防上往往体现出一定的能力缺失,驱动级恶意程序(Rootkit)对抗能力偏弱。因此,目前需要本领域技术人员迫切解决的一个技术问题就是提出一种文件解锁的处理机制,用以在复杂的客户端环境中识别恶意程序的文件自保护行为并加以对抗,增强和驱动级恶意程序攻防的对抗能力。

发明内容
本发明所要解决的技术问题是提供一种文件解锁的方法,以增强和驱动级恶意程序攻防的对抗能力。本发明还提供了一种文件解锁的装置,用以保证上述方法在实际中的应用及实现。为了解决上述问题,本发明实施例公开了一种文件解锁的方法,包括尝试针对目标文件执行删除操作或写入操作;若所述目标文件无法执行删除或写入操作,则获取所述目标文件的属性;若所述目标文件的属性为只读,则调用自定义的用于文件属性更改的应用程序接口去除所述目标文件的只读属性。优选的,所述调用自定义的用于文件属性更改的应用程序接口去除目标文件只读属性的步骤包括获取针对目标文件的属性更改请求,所述请求中包括调用者输入参数,所述输入参数中包括目标文件的路径;校验所述调用者输入参数,若校验通过,则依据所述目标文件路径在对象管理器中查找对应的文件对象解析例程;若查找到对应的文件对象解析例程,则依据所述文件对象解析例程生成I/O请求包,并发送至预置的文件系统下层设备的原始地址;其中,所述I/o请求包中包括依据所述属性更改请求生成的目标文件属性更改操作信息;由所述文件系统下层设备依据所述目标文件属性更改操作信息,去除目标文件的只读属性。优选的,所述获取目标文件的属性的步骤包括调用自定义的用于获取文件属性的应用程序接口获取所述目标文件的属性,具体 包括获取针对目标文件的属性查询请求,所述请求中包括调用者输入参数,所述输入参数中包括目标文件的路径;校验所述调用者输入参数,若校验通过,则依据所述目标文件路径在对象管理器中查找对应的文件对象解析例程;若查找到对应的文件对象解析例程,则依据所述文件对象解析例程生成I/O请求包,并发送至预置的文件系统下层设备的原始地址;其中,所述I/o请求包中包括依据所述属性查询请求生成的目标文件属性查询操作信息;由所述文件系统下层设备依据所述目标文件属性查询操作信息,查询目标文件的属性。优选的,所述获取目标文件的属性的步骤包括调用操作系统的应用程序接口 API获取所述目标文件的属性,具体包括调用位于用户态的文件属性获取例程的操作系统应用程序接口 API GetFileAttributes ;通过所述GetFileAttributes例程调用位于用户态的文件信息查询例程的操作系统原生应用程序接口 Native API ZwQueryInformationFiIe ;通过所述用户态的ZwQueryInformationFile例程调用位于内核态的文件信息查询例程ZwQueryInformationFile,由所述内核态的ZwQueryInformationFile例程查询目标文件的属性。优选的,在去除所述目标文件的只读属性后,还包括调用操作系统应用程序接口 API删除所述目标文件,具体包括调用位于用户态的文件删除例程的操作系统应用程序接口 API =DeleteFile ;通过所述DeleteFile例程调用位于用户态的文件删除例程的操作系统原生应用程序接口 Native API ZwDeleteFile ;通过所述用户态的ZwDeleteFiIe例程调用位于内核态的文件删除例程ZwDeleteFile,通过所述内核态的ZwDeleteFile例程删除目标文件。优选的,在去除所述目标文件的只读属性后,还包括调用自定义的用于删除文件的应用程序接口删除所述目标文件,具体包括获取针对目标文件的删除请求,所述请求中包括调用者输入参数,所述输入参数中包括目标文件的路径;校验所述调用者输入参数,若校验通过,则依据所述目标文件路径在对象管理器中查找对应的文件对象解析例程;若查找到对应的文件对象解析例程,则依据所述文件对象解析例程生成I/O请求包,并发送至预置的文件系统下层设备的原始地址;其中,所述I/O请求包中包括依据所述删除请求生成的目标文件删除操作信息;由所述文件系统下层设备依据所述目标文件删除操作信息,删除所述目标文件。优选的,所述依据文件路径在对象管理器中查找对应的文件对象解析例程的步骤具体包括以下子步骤; 子步骤SI、判断文件路径是否已经拆解完毕,若否,则执行子步骤S2 ;若是,则执 行子步骤S4 ;子步骤S2、按照路径分隔符拆解出文件路径中下一个待拆解的路径段;子步骤S3、采用当前拆解出的路径段在对象管理器中搜索,判断是否存在对应的文件对象例程;若是,则返回子步骤SI ;若否,则执行子步骤S5 ;子步骤S4、获得所述文件路径对应的文件对象解析例程。子步骤S5、返回未找到对应文件对象解析例程的信息。本发明实施例还公开了一种文件解锁的装置,包括操作模块,用于尝试针对目标文件执行删除操作或写入操作;属性获取模块,用于在所述目标文件无法执行删除或写入操作时,获取所述目标文件的属性;只读属性去除模块,用于在所述目标文件的属性为只读时,调用自定义的用于文件属性更改的应用程序接口去除所述目标文件的只读属性。优选的,所述只读属性去除模块包括属性更改请求获取子模块,用于获取针对目标文件的属性更改请求,所述请求中包括调用者输入参数,所述输入参数中包括目标文件的路径;参数校验子模块,用于校验所述调用者输入参数,若校验通过,则触发对象查找子模块;对象查找子模块,用于依据所述目标文件路径在对象管理器中查找对应的文件对象解析例程;第一 IRP包发送子模块,用于在查找到对应的文件对象解析例程时,依据所述文件对象解析例程生成I/o请求包,所述I/O请求包中包括依据所述属性更改请求生成的目标文件属性更改操作信息,并将所述I/o请求包发送至预置的文件系统下层设备的原始地址;由所述文件系统下层设备依据所述目标文件属性更改操作信息,去除目标文件的只读属性。优选的,所述属性获取模块包括属性查询请求获取子模块,用于获取针对目标文件的属性查询请求,所述请求中包括调用者输入参数,所述输入参数中包括目标文件的路径;参数校验子模块,用于校验所述调用者输入参数,若校验通过,则触发对象查找子模块;
对象查找子模块,用于依据所述目标文件路径在对象管理器中查找对应的文件对象解析例程;第二 IRP包发送子模块,用于在查找到对应的文件对象解析例程时,依据所述文件对象解析例程生成I/o请求包,所述I/O请求包中包括依据所述属性查询请求生成的目标文件属性查询操作信息;并将所述I/o请求包发送至预置的文件系统下层设备的原始地址,由所述文件系统下层设备依据所述目标文件属性查询操作信息,查询目标文件的属性。优选的,所述属性获取模块包括用户态文件属性获取API调用子模块,用于调用位于用户态的文件属性获取例程 的操作系统应用程序接口 API GetFiIeAttributes ;用户态文件属性获取Native API调用子模块,用于通过所述GetFileAttributes例程调用位于用户态的文件信息查询例程的操作系统原生应用程序接口 Native API ZwQueryInformationFile ;内核态文件属性获取Native API调用子模块,用于通过所述用户态的ZwQueryInformationFile例程调用位于内核态的文件信息查询例程ZwQueryInformationFile,由所述内核态的ZwQueryInformationFile例程查询目标文件的属性。优选的,所述的装置,还包括第一删除模块,用于在去除所述目标文件的只读属性后,调用操作系统应用程序接口 API删除所述目标文件,具体包括用户态文件删除API调用子模块,用于调用位于用户态的文件删除例程的操作系统应用程序接口 API =DeleteFile ;用户态文件删除Native API调用子模块,用于通过所述DeleteFile例程调用位于用户态的文件删除例程的操作系统原生应用程序接口 NativeAPI ZwDeleteFile ;内核态文件删除Native API调用子模块,用于通过所述用户态的ZwDeleteFile例程调用位于内核态的文件删除例程ZwDeleteFile,通过所述内核态的ZwDeleteFile例程删除目标文件。优选的,所述的装置,还包括第二删除模块,用于在去除所述目标文件的只读属性后,调用自定义的用于删除文件的应用程序接口删除所述目标文件,具体包括文件删除请求获取子模块,用于获取针对目标文件的删除请求,所述请求中包括调用者输入参数,所述输入参数中包括目标文件的路径;参数校验子模块,用于校验所述调用者输入参数,若校验通过,则触发对象查找子模块;对象查找子模块,用于依据所述目标文件路径在对象管理器中查找对应的文件对象解析例程;第三IRP包发送子模块,用于在查找到对应的文件对象解析例程时,依据所述文件对象解析例程生成I/O请求包,所述I/O请求包中包括依据所述删除请求生成的目标文件删除操作信息,并将所述I/O请求包发送至预置的文件系统下层设备的原始地址,由所述文件系统下层设备依据所述目标文件删除操作信息,删除所述目标文件。
与现有技术相比,本发明具有以下优点本发明通过尝试针对目标文件执行删除操作或写入操作,并在所述目标文件无法执行删除或写入操作时,则获取所述目标文件的属性;若所述目标文件的属性为只读,则调用自定义的用于文件属性更改的应用程序接口去除所述目标文件的只读属性,而后对去除只读属性的目标文件执行解锁和粉碎的操作。本发明所提供的文件解锁、粉碎机制不仅安全、可靠、成功率高,并且可以在复杂的客户端环境中识别恶意程序的文件自保护行为并加以对抗,增强了和驱动级恶意程序攻防的对抗能力。


图I是本发明的一种文件解锁的方法实施例的步骤流程图;
图2是本发明的一种文件解锁的装置实施例的结构框图。
具体实施例方式为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式
对本发明作进一步详细的说明。参考图1,示出了本发明的一种文件解锁的方法实施例的步骤流程图,具体可以包括以下步骤步骤101、尝试针对目标文件执行删除操作或写入操作;在Windows操作系统用户态,可以使用函数DeleteFile、ZwDeleteFile尝试删除目标文件;在Windows操作系统内核态,可以使用函数ZwDeIeteFiIe尝试删除目标文件。具体而言,即通过调用位于用户态的文件删除例程的操作系统应用程序接口 API DeleteFile ;然后通过所述DeleteFile例程调用位于用户态的文件删除例程的操作系统原生应用程序接口 Native API ZwDeleteFile ;再通过所述用户态的ZwDeleteFile例程调用位于内核态的文件删除例程ZwDeleteFile,通过所述内核态的ZwDeleteFile例程尝试删除目标文件。更具体而言,所述用户态的DeleteFile例程内部会调用用户态的ZwDeleteFile例程,用户态的ZwDeleteFile例程调用内核态的ZwDeleteFile例程后,内核态的ZwDeleteFile例程内部会执行目标文件删除的操作。在Windows操作系统用户态,可以使用函数WriteFile、ZwffriteFile尝试向目标文件写入内容;在Windows操作系统内核态,可以使用函数ZwWriteFile尝试向目标文件写入内容。具体而言,即通过调用位于用户态的文件写入例程的操作系统应用程序接口 API =WriteFile ;然后通过所述WriteFile例程调用位于用户态的文件写入例程的操作系统原生应用程序接口 Native API ZwffriteFile ;再通过所述用户态的ZwWriteFile例程调用位于内核态的文件写入例程ZwWriteFile,通过所述内核态的ZwWriteFile例程尝试向目标文件写入内容。更具体而言,所述用户态的WriteFile例程内部会调用用户态的ZwffriteFile例程,用户态的ZwWriteFile例程调用内核态的ZwWriteFile例程后,内核态的ZwWriteFile例程内部会执行向目标文件写入内容的操作。需要说明的是,上述删除操作和写入操作均是在打开文件的情况下执行的。在本发明实施例中,所述文件包括WINDOWS操作系统中所支持类型的文件,所述文件打开不是指通过双击鼠标或按回车键等触发方式打开文件(如*. exe, *. doc等类型的文件);而是指用操作系统API或本发明的自定义的应用程序接口 BAPI(应用本发明,可以在操作系统用户态接口完整实现一套文件操作调用库)的CreateFileO函数等打开文件、得到文件句柄的操作,因为只有得到文件句柄后才可以进一步操作该文件。从函数调用方法角度而言,本发明实施例中所指文件“打开”主要包括以下几种情形I、使用Windows标准API CreateFile函数打开目标文件;2、使用 Windows Native API ZwCreateFile/NtCreateFile 函数打开目标文件;3、使用 Windows Native API ZwOpenFile/NtOpenFile 函数打开目标文件。其中,CreateFile的参数dwCreationDisposition可以控制函数行为是“创建新文件”还是“打开已经存在的文件”。步骤102、若所述目标文件无法执行删除或写入操作,则获取所述目标文件的属性;在实际中,若接收到上述目标文件删除或写入操作的调用错误码,则获取该目标文件的属性信息。例如,如果目标文件具有只读属性,则上述调用会返回错误码,参考微软MSDN 中的描述为“If the file is aread-only file, the function fails with ERR0R_ACCESS_DENIED (若文件为只读文件,则因为ERR0R_ACCESS_DENIED调用失败)”;其中,ERR0R_ACCESS_DENIED是一个数值,值为5。它的定义位于微软WINERR0R. H头文件中,如

权利要求
1.一种文件解锁的方法,其特征在于,包括 尝试针对目标文件执行删除操作或写入操作; 若所述目标文件无法执行删除或写入操作,则获取所述目标文件的属性; 若所述目标文件的属性为只读,则调用自定义的用于文件属性更改的应用程序接口去除所述目标文件的只读属性。
2.如权利要求I所述的方法,其特征在于,所述调用自定义的用于文件属性更改的应用程序接口去除目标文件只读属性的步骤包括 获取针对目标文件的属性更改请求,所述请求中包括调用者输入参数,所述输入参数中包括目标文件的路径; 校验所述调用者输入参数,若校验通过,则依据所述目标文件路径在对象管理器中查 找对应的文件对象解析例程; 若查找到对应的文件对象解析例程,则依据所述文件对象解析例程生成I/o请求包,并发送至预置的文件系统下层设备的原始地址;其中,所述I/o请求包中包括依据所述属性更改请求生成的目标文件属性更改操作信息; 由所述文件系统下层设备依据所述目标文件属性更改操作信息,去除目标文件的只读属性。
3.如权利要求2所述的方法,其特征在于,所述获取目标文件的属性的步骤包括 调用自定义的用于获取文件属性的应用程序接口获取所述目标文件的属性,具体包括 获取针对目标文件的属性查询请求,所述请求中包括调用者输入参数,所述输入参数中包括目标文件的路径; 校验所述调用者输入参数,若校验通过,则依据所述目标文件路径在对象管理器中查找对应的文件对象解析例程; 若查找到对应的文件对象解析例程,则依据所述文件对象解析例程生成I/o请求包,并发送至预置的文件系统下层设备的原始地址;其中,所述I/o请求包中包括依据所述属性查询请求生成的目标文件属性查询操作信息; 由所述文件系统下层设备依据所述目标文件属性查询操作信息,查询目标文件的属性。
4.如权利要求I或2所述的方法,其特征在于,所述获取目标文件的属性的步骤包括 调用操作系统的应用程序接口 API获取所述目标文件的属性,具体包括 调用位于用户态的文件属性获取例程的操作系统应用程序接口 API GetFileAttribute s ; 通过所述GetFileAttributes例程调用位于用户态的文件信息查询例程的操作系统原生应用程序接口 Native API ZwQueryInformationFiIe ; 通过所述用户态的ZwQueryInformationFile例程调用位于内核态的文件信息查询例程ZwQueryInformationFile,由所述内核态的ZwQueryInformationFile例程查询目标文件的属性。
5.如权利要求1、2或3所述的方法,其特征在于,在去除所述目标文件的只读属性后,还包括调用操作系统应用程序接口 API删除所述目标文件,具体包括 调用位于用户态的文件删除例程的操作系统应用程序接口 API =DeleteFile ; 通过所述DeleteFile例程调用位于用户态的文件删除例程的操作系统原生应用程序接口 Native API ZwDeleteFile ; 通过所述用户态的ZwDeleteFile例程调用位于内核态的文件删除例程ZwDeleteFile,通过所述内核态的ZwDeleteFile例程删除目标文件。
6.如权利要求1、2或3所述的方法,其特征在于,在去除所述目标文件的只读属性后,还包括 调用自定义的用于删除文件的应用程序接口删除所述目标文件,具体包括 获取针对目标文件的删除请求,所述请求中包括调用者输入参数,所述输入参数中包括目标文件的路径; 校验所述调用者输入参数,若校验通过,则依据所述目标文件路径在对象管理器中查找对应的文件对象解析例程; 若查找到对应的文件对象解析例程,则依据所述文件对象解析例程生成I/O请求包,并发送至预置的文件系统下层设备的原始地址;其中,所述I/o请求包中包括依据所述删除请求生成的目标文件删除操作信息; 由所述文件系统下层设备依据所述目标文件删除操作信息,删除所述目标文件。
7.如权利要求2、3或6所述的方法,其特征在于,所述依据文件路径在对象管理器中查找对应的文件对象解析例程的步骤具体包括以下子步骤; 子步骤SI、判断文件路径是否已经拆解完毕,若否,则执行子步骤S2 ;若是,则执行子步骤S4 ; 子步骤S2、按照路径分隔符拆解出文件路径中下一个待拆解的路径段; 子步骤S3、采用当前拆解出的路径段在对象管理器中搜索,判断是否存在对应的文件对象例程;若是,则返回子步骤SI ;若否,则执行子步骤S5 ; 子步骤S4、获得所述文件路径对应的文件对象解析例程。
子步骤S5、返回未找到对应文件对象解析例程的信息。
8.一种文件解锁的装置,其特征在于,包括 操作模块,用于尝试针对目标文件执行删除操作或写入操作; 属性获取模块,用于在所述目标文件无法执行删除或写入操作时,获取所述目标文件的属性; 只读属性去除模块,用于在所述目标文件的属性为只读时,调用自定义的用于文件属性更改的应用程序接口去除所述目标文件的只读属性。
9.如权利要求8所述的装置,其特征在于,所述只读属性去除模块包括 属性更改请求获取子模块,用于获取针对目标文件的属性更改请求,所述请求中包括调用者输入参数,所述输入参数中包括目标文件的路径; 参数校验子模块,用于校验所述调用者输入参数,若校验通过,则触发对象查找子模块; 对象查找子模块,用于依据所述目标文件路径在对象管理器中查找对应的文件对象解析例程;第一 IRP包发送子模块,用于在查找到对应的文件对象解析例程时,依据所述文件对象解析例程生成I/O请求包,所述I/O请求包中包括依据所述属性更改请求生成的目标文件属性更改操作信息,并将所述I/o请求包发送至预置的文件系统下层设备的原始地址;由所述文件系统下层设备依据所述目标文件属性更改操作信息,去除目标文件的只读属性。
10.如权利要求9所述的装置,其特征在于,所述属性获取模块包括 属性查询请求获取子模块,用于获取针对目标文件的属性查询请求,所述请求中包括调用者输入参数,所述输入参数中包 括目标文件的路径; 参数校验子模块,用于校验所述调用者输入参数,若校验通过,则触发对象查找子模块; 对象查找子模块,用于依据所述目标文件路径在对象管理器中查找对应的文件对象解析例程; 第二 IRP包发送子模块,用于在查找到对应的文件对象解析例程时,依据所述文件对象解析例程生成I/O请求包,所述I/O请求包中包括依据所述属性查询请求生成的目标文件属性查询操作信息;并将所述I/o请求包发送至预置的文件系统下层设备的原始地址,由所述文件系统下层设备依据所述目标文件属性查询操作信息,查询目标文件的属性。
11.如权利要求8或9所述的装置,其特征在于,所述属性获取模块包括 用户态文件属性获取API调用子模块,用于调用位于用户态的文件属性获取例程的操作系统应用程序接口 API GetFiIeAttributes ; 用户态文件属性获取Native API调用子模块,用于通过所述GetFileAttributes例程调用位于用户态的文件信息查询例程的操作系统原生应用程序接口 Native API ZwQueryInformationFile ; 内核态文件属性获取Native API调用子模块,用于通过所述用户态的ZwQueryInformationFile例程调用位于内核态的文件信息查询例程ZwQueryInformationFile,由所述内核态的ZwQueryInformationFile例程查询目标文件的属性。
12.如权利要求8、9或10所述的装置,其特征在于,还包括 第一删除模块,用于在去除所述目标文件的只读属性后,调用操作系统应用程序接口API删除所述目标文件,具体包括 用户态文件删除API调用子模块,用于调用位于用户态的文件删除例程的操作系统应用程序接口 API DeleteFile ; 用户态文件删除Native API调用子模块,用于通过所述DeleteFile例程调用位于用户态的文件删除例程的操作系统原生应用程序接口 NativeAPI =ZwDeleteFile ; 内核态文件删除Native API调用子模块,用于通过所述用户态的ZwDeleteFile例程调用位于内核态的文件删除例程ZwDeleteFile,通过所述内核态的ZwDeleteFile例程删除目标文件。
13.如权利要求8、9或10所述的装置,其特征在于,还包括 第二删除模块,用于在去除所述目标文件的只读属性后,调用自定义的用于删除文件的应用程序接口删除所述目标文件,具体包括文件删除请求获取子模块,用于获取针对目标文件的删除请求,所述请求中包括调用者输入参数,所述输入参数中包括目标文件的路径; 参数校验子模块,用于校验所述调用者输入参数,若校验通过,则触发对象查找子模块; 对象查找子模块,用于依据所述目标文件路径在对象管理器中查找对应的文件对象解析例程; 第三IRP包发送子模块,用于在查找到对应的文件对象解析例程时,依据所述文件对象解析例程生成I/O请求包,所述I/O请求包中包括依据所述删除请求生成的目标文件删除操作信息,并将所述I/O请求包发送至预置的文件系统下层设备的原始地址,由所述文件系统下层设备依据所述目标文件删除操作信息,删除所述目标文件。
全文摘要
本发明提供了一种文件解锁的方法和装置,其中,所述方法包括尝试针对目标文件执行删除操作或写入操作;若所述目标文件无法执行删除或写入操作,则获取所述目标文件的属性;若所述目标文件的属性为只读,则调用自定义的用于文件属性更改的应用程序接口去除所述目标文件的只读属性。本发明所提供的文件解锁、粉碎机制不仅安全、可靠、成功率高,并且可以在复杂的客户端环境中识别恶意程序的文件自保护行为并加以对抗,增强了和驱动级恶意程序攻防的对抗能力。
文档编号G06F21/56GK102855436SQ20111017541
公开日2013年1月2日 申请日期2011年6月27日 优先权日2011年6月27日
发明者王宇, 潘剑锋 申请人:奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1