CN102855436B - 一种文件解锁的方法及装置 - Google Patents

一种文件解锁的方法及装置 Download PDF

Info

Publication number
CN102855436B
CN102855436B CN201110175414.4A CN201110175414A CN102855436B CN 102855436 B CN102855436 B CN 102855436B CN 201110175414 A CN201110175414 A CN 201110175414A CN 102855436 B CN102855436 B CN 102855436B
Authority
CN
China
Prior art keywords
file
routine
attribute
file destination
request
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 - Reinstated
Application number
CN201110175414.4A
Other languages
English (en)
Other versions
CN102855436A (zh
Inventor
王宇
潘剑锋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qizhi Business Consulting Co ltd
Beijing Qihoo Technology Co Ltd
360 Digital Security Technology Group Co Ltd
Original Assignee
Qizhi Software Beijing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Qizhi Software Beijing Co Ltd filed Critical Qizhi Software Beijing Co Ltd
Priority to CN201110175414.4A priority Critical patent/CN102855436B/zh
Priority to CN201510145493.2A priority patent/CN104732142B/zh
Publication of CN102855436A publication Critical patent/CN102855436A/zh
Application granted granted Critical
Publication of CN102855436B publication Critical patent/CN102855436B/zh
Active - Reinstated legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种文件解锁的方法和装置,其中,所述方法包括:尝试针对目标文件执行删除操作或写入操作;若所述目标文件无法执行删除或写入操作,则获取所述目标文件的属性;若所述目标文件的属性为只读,则调用自定义的用于文件属性更改的应用程序接口去除所述目标文件的只读属性。本发明所提供的文件解锁、粉碎机制不仅安全、可靠、成功率高,并且可以在复杂的客户端环境中识别恶意程序的文件自保护行为并加以对抗,增强了和驱动级恶意程序攻防的对抗能力。

Description

一种文件解锁的方法及装置
技术领域
本发明涉及计算机安全的技术领域,特别是涉及一种文件解锁的方法和一种文件解锁的装置。
背景技术
计算机病毒是指“编制者在计算机程序中***的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序代码。计算机一旦染上病毒,计算机通常表现为其文件被增加、删出、改变名称或属性、移动到其它目录下,病毒对计算机文件的这些操作,可能会导致正常的程序无法运行、计算机操作***崩溃、计算机被远程控制、用户信息被盗用等一系列的问题。
为了保证计算机的安全运行,需要对计算机中感染病毒的文件进行病毒查杀,以防止和清除病毒的破坏。在安全软件领域,针对染毒计算机文件的“删除”与“反删除”是安全软件和恶意程序(计算机病毒)对抗的永恒主题之一。
现有技术中的病毒,往往通过文件只读属性限制等手段给染毒文件加上了加密锁,采用常规手段无法破解加密锁即无法删除染毒文件,这些手段阻止杀毒软件查杀染毒文件。安全软件查杀病毒的过程,可以理解为对染毒文件进行解锁和粉碎。现有安全软件,对染毒文件的解锁和粉碎手段单一,无法破除染毒文件设置的层层保护,对抗能力不强。传统安全软件厂商只解决了部分“反删除”问题,在操作***内核态的攻防上往往体现出一定的能力缺失,驱动级恶意程序(Rootkit)对抗能力偏弱。
因此,目前需要本领域技术人员迫切解决的一个技术问题就是:提出一种文件解锁的处理机制,用以在复杂的客户端环境中识别恶意程序的文件自保护行为并加以对抗,增强和驱动级恶意程序攻防的对抗能力。
发明内容
本发明所要解决的技术问题是提供一种文件解锁的方法,以增强和驱动级恶意程序攻防的对抗能力。
本发明还提供了一种文件解锁的装置,用以保证上述方法在实际中的应用及实现。
为了解决上述问题,本发明实施例公开了一种文件解锁的方法,包括:
尝试针对目标文件执行删除操作或写入操作;
若所述目标文件无法执行删除或写入操作,则获取所述目标文件的属性;
若所述目标文件的属性为只读,则调用自定义的用于文件属性更改的应用程序接口去除所述目标文件的只读属性。
优选的,所述调用自定义的用于文件属性更改的应用程序接口去除目标文件只读属性的步骤包括:
获取针对目标文件的属性更改请求,所述请求中包括调用者输入参数,所述输入参数中包括目标文件的路径;
校验所述调用者输入参数,若校验通过,则依据所述目标文件路径在对象管理器中查找对应的文件对象解析例程;
若查找到对应的文件对象解析例程,则依据所述文件对象解析例程生成I/O请求包,并发送至预置的文件***下层设备的原始地址;其中,所述I/O请求包中包括依据所述属性更改请求生成的目标文件属性更改操作信息;
由所述文件***下层设备依据所述目标文件属性更改操作信息,去除目标文件的只读属性。
优选的,所述获取目标文件的属性的步骤包括:
调用自定义的用于获取文件属性的应用程序接口获取所述目标文件的属性,具体包括:
获取针对目标文件的属性查询请求,所述请求中包括调用者输入参数,所述输入参数中包括目标文件的路径;
校验所述调用者输入参数,若校验通过,则依据所述目标文件路径在对象管理器中查找对应的文件对象解析例程;
若查找到对应的文件对象解析例程,则依据所述文件对象解析例程生成I/O请求包,并发送至预置的文件***下层设备的原始地址;其中,所述I/O请求包中包括依据所述属性查询请求生成的目标文件属性查询操作信息;
由所述文件***下层设备依据所述目标文件属性查询操作信息,查询目标文件的属性。
优选的,所述获取目标文件的属性的步骤包括:
调用操作***的应用程序接口API获取所述目标文件的属性,具体包括:
调用位于用户态的文件属性获取例程的操作***应用程序接口API:GetFileAttributes;
通过所述GetFileAttributes例程调用位于用户态的文件信息查询例程的操作***原生应用程序接口Native API:ZwQueryInformationFile;
通过所述用户态的ZwQueryInformationFile例程调用位于内核态的文件信息查询例程ZwQueryInformationFile,由所述内核态的ZwQueryInformationFile例程查询目标文件的属性。
优选的,在去除所述目标文件的只读属性后,还包括:
调用操作***应用程序接口API删除所述目标文件,具体包括:
调用位于用户态的文件删除例程的操作***应用程序接口API:DeleteFile;
通过所述DeleteFile例程调用位于用户态的文件删除例程的操作***原生应用程序接口Native API:ZwDeleteFile;
通过所述用户态的ZwDeleteFile例程调用位于内核态的文件删除例程ZwDeleteFile,通过所述内核态的ZwDeleteFile例程删除目标文件。
优选的,在去除所述目标文件的只读属性后,还包括:
调用自定义的用于删除文件的应用程序接口删除所述目标文件,具体包括:
获取针对目标文件的删除请求,所述请求中包括调用者输入参数,所述输入参数中包括目标文件的路径;
校验所述调用者输入参数,若校验通过,则依据所述目标文件路径在对象管理器中查找对应的文件对象解析例程;
若查找到对应的文件对象解析例程,则依据所述文件对象解析例程生成I/O请求包,并发送至预置的文件***下层设备的原始地址;其中,所述I/O请求包中包括依据所述删除请求生成的目标文件删除操作信息;
由所述文件***下层设备依据所述目标文件删除操作信息,删除所述目标文件。
优选的,所述依据文件路径在对象管理器中查找对应的文件对象解析例程的步骤具体包括以下子步骤;
子步骤S1、判断文件路径是否已经拆解完毕,若否,则执行子步骤S2;若是,则执行子步骤S4;
子步骤S2、按照路径分隔符拆解出文件路径中下一个待拆解的路径段;
子步骤S3、采用当前拆解出的路径段在对象管理器中搜索,判断是否存在对应的文件对象例程;若是,则返回子步骤S1;若否,则执行子步骤S5;
子步骤S4、获得所述文件路径对应的文件对象解析例程。
子步骤S5、返回未找到对应文件对象解析例程的信息。
本发明实施例还公开了一种文件解锁的装置,包括:
操作模块,用于尝试针对目标文件执行删除操作或写入操作;
属性获取模块,用于在所述目标文件无法执行删除或写入操作时,获取所述目标文件的属性;
只读属性去除模块,用于在所述目标文件的属性为只读时,调用自定义的用于文件属性更改的应用程序接口去除所述目标文件的只读属性。
优选的,所述只读属性去除模块包括:
属性更改请求获取子模块,用于获取针对目标文件的属性更改请求,所述请求中包括调用者输入参数,所述输入参数中包括目标文件的路径;
参数校验子模块,用于校验所述调用者输入参数,若校验通过,则触发对象查找子模块;
对象查找子模块,用于依据所述目标文件路径在对象管理器中查找对应的文件对象解析例程;
第一IRP包发送子模块,用于在查找到对应的文件对象解析例程时,依据所述文件对象解析例程生成I/O请求包,所述I/O请求包中包括依据所述属性更改请求生成的目标文件属性更改操作信息,并将所述I/O请求包发送至预置的文件***下层设备的原始地址;由所述文件***下层设备依据所述目标文件属性更改操作信息,去除目标文件的只读属性。
优选的,所述属性获取模块包括:
属性查询请求获取子模块,用于获取针对目标文件的属性查询请求,所述请求中包括调用者输入参数,所述输入参数中包括目标文件的路径;
参数校验子模块,用于校验所述调用者输入参数,若校验通过,则触发对象查找子模块;
对象查找子模块,用于依据所述目标文件路径在对象管理器中查找对应的文件对象解析例程;
第二IRP包发送子模块,用于在查找到对应的文件对象解析例程时,依据所述文件对象解析例程生成I/O请求包,所述I/O请求包中包括依据所述属性查询请求生成的目标文件属性查询操作信息;并将所述I/O请求包发送至预置的文件***下层设备的原始地址,由所述文件***下层设备依据所述目标文件属性查询操作信息,查询目标文件的属性。
优选的,所述属性获取模块包括:
用户态文件属性获取API调用子模块,用于调用位于用户态的文件属性获取例程的操作***应用程序接口API:GetFileAttributes;
用户态文件属性获取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请求包发送至预置的文件***下层设备的原始地址,由所述文件***下层设备依据所述目标文件删除操作信息,删除所述目标文件。
与现有技术相比,本发明具有以下优点:
本发明通过尝试针对目标文件执行删除操作或写入操作,并在所述目标文件无法执行删除或写入操作时,则获取所述目标文件的属性;若所述目标文件的属性为只读,则调用自定义的用于文件属性更改的应用程序接口去除所述目标文件的只读属性,而后对去除只读属性的目标文件执行解锁和粉碎的操作。本发明所提供的文件解锁、粉碎机制不仅安全、可靠、成功率高,并且可以在复杂的客户端环境中识别恶意程序的文件自保护行为并加以对抗,增强了和驱动级恶意程序攻防的对抗能力。
附图说明
图1是本发明的一种文件解锁的方法实施例的步骤流程图;
图2是本发明的一种文件解锁的装置实施例的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参考图1,示出了本发明的一种文件解锁的方法实施例的步骤流程图,具体可以包括以下步骤:
步骤101、尝试针对目标文件执行删除操作或写入操作;
在Windows操作***用户态,可以使用函数DeleteFile、ZwDeleteFile尝试删除目标文件;在Windows操作***内核态,可以使用函数ZwDeleteFile尝试删除目标文件。具体而言,即通过调用位于用户态的文件删除例程的操作***应用程序接口API:DeleteFile;然后通过所述DeleteFile例程调用位于用户态的文件删除例程的操作***原生应用程序接口Native API:ZwDeleteFile;再通过所述用户态的ZwDeleteFile例程调用位于内核态的文件删除例程ZwDeleteFile,通过所述内核态的ZwDeleteFile例程尝试删除目标文件。更具体而言,所述用户态的DeleteFile例程内部会调用用户态的ZwDeleteFile例程,用户态的ZwDeleteFile例程调用内核态的ZwDeleteFile例程后,内核态的ZwDeleteFile例程内部会执行目标文件删除的操作。
在Windows操作***用户态,可以使用函数WriteFile、ZwWriteFile尝试向目标文件写入内容;在Windows操作***内核态,可以使用函数ZwWriteFile尝试向目标文件写入内容。具体而言,即通过调用位于用户态的文件写入例程的操作***应用程序接口API:WriteFile;然后通过所述WriteFile例程调用位于用户态的文件写入例程的操作***原生应用程序接口Native API:ZwWriteFile;再通过所述用户态的ZwWriteFile例程调用位于内核态的文件写入例程ZwWriteFile,通过所述内核态的ZwWriteFile例程尝试向目标文件写入内容。更具体而言,所述用户态的WriteFile例程内部会调用用户态的ZwWriteFile例程,用户态的ZwWriteFile例程调用内核态的ZwWriteFile例程后,内核态的ZwWriteFile例程内部会执行向目标文件写入内容的操作。
需要说明的是,上述删除操作和写入操作均是在打开文件的情况下执行的。在本发明实施例中,所述文件包括WINDOWS操作***中所支持类型的文件,所述文件打开不是指通过双击鼠标或按回车键等触发方式打开文件(如*.exe、*.doc等类型的文件);而是指用操作***API或本发明的自定义的应用程序接口BAPI(应用本发明,可以在操作***用户态接口完整实现一套文件操作调用库)的CreateFile()函数等打开文件、得到文件句柄的操作,因为只有得到文件句柄后才可以进一步操作该文件。
从函数调用方法角度而言,本发明实施例中所指文件“打开”主要包括以下几种情形:
1、使用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 ERROR_ACCESS_DENIED(若文件为只读文件,则因为ERROR_ACCESS_DENIED调用失败)”;其中,ERROR_ACCESS_DENIED是一个数值,值为5。它的定义位于微软WINERROR.H头文件中,如下:
在Windows操作***用户态,可以使用函数GetFileAttributes、ZwQueryInformationFile查询目标文件的属性(这一过程是主动发起的,即调用者主动调用GetFileAttributes函数);在Windows操作***内核态,可以使用函数ZwQueryInformationFile查询文件属性。
即在本发明的一种优选实施例中,所述目标文件的属性可以通过调用操作***的应用程序接口API获取,具体可以包括以下子步骤:
子步骤S11、调用位于用户态的文件属性获取例程的操作***应用程序接口API:GetFileAttributes;
子步骤S 12、通过所述GetFileAttributes例程调用位于用户态的文件信息查询例程的操作***原生应用程序接口Native API:ZwQueryInformationFile;
子步骤S 13、通过所述用户态的ZwQueryInformationFile例程调用位于内核态的文件信息查询例程ZwQueryInformationFile,由所述内核态的ZwQueryInformationFile例程查询目标文件的属性。
更具体而言,所述用户态的GetFileAttributes例程内部会调用用户态的ZwQueryInformationFile例程,用户态的ZwQueryInformationFile例程调用内核态的ZwQueryInformationFile  例程后,内核态的ZwQueryInformationFile例程内部会执行查询目标文件属性的操作。
在实际中,GetFileAttributes函数的返回值是一个数值(的集合),数值里不同的“位”(Bit)表示不同的含义,其中宏变量FILE_ATTRIBUTE_READONLY(值为0x01)表示只读。ZwQueryInformationFile和GetFileAttributes函数的原理类似,其会将文件属性信息填充在返回结构FILE_BASIC_INFORMATION的FileAttributes域中,其中FILE_ATTRIBUTE_READONLY表示只读。
在本发明的另一种优选实施例中,所述目标文件的属性可以通过调用自定义的用于获取文件属性的应用程序接口获取,具体可以包括以下子步骤:
子步骤S21、获取针对目标文件的属性查询请求,所述请求中包括调用者输入参数,所述输入参数中包括目标文件的路径;
子步骤S22、校验所述调用者输入参数,若校验通过,则依据所述目标文件路径在对象管理器中查找对应的文件对象解析例程;
子步骤S23、若查找到对应的文件对象解析例程,则依据所述文件对象解析例程生成I/O请求包,并发送至预置的文件***下层设备的原始地址;其中,所述I/O请求包中包括依据所述属性查询请求生成的目标文件属性查询操作信息;
子步骤S24、由所述文件***下层设备依据所述目标文件属性查询操作信息,查询目标文件的属性。
在本发明的一种实施例中,所述子步骤S22中依据文件路径在对象管理器中查找对应的文件对象解析例程的步骤具体包括以下子步骤;
子步骤S221、判断文件路径是否已经拆解完毕,若否,则执行子步骤S222;若是,则执行子步骤S224;
子步骤S222、按照路径分隔符拆解出文件路径中下一个待拆解的路径段;
子步骤S223、采用当前拆解出的路径段在对象管理器中搜索,判断是否存在对应的文件对象例程;若是,则返回子步骤S221;若否,则执行子步骤S225;
子步骤S224、获得所述文件路径对应的文件对象解析例程。
子步骤S225、返回未找到对应文件对象解析例程的信息。
在具体实现中,可以预先构建对象管理器查询的OpenPacket结构,基于路径分隔符“\”循环拆解文件路径,例如,文件路径为:c:\a\b.txt,则第一次拆解出的路径段为c:,第二次拆解出的路径段为:c:\a,第三次拆解出的路径段为:c:\a\b.txt,即在本发明实施例,是基于递归调用的方式拆解文件路径。
对象管理器中维护有拉链式的对象Hash表,基于每次拆解出的路径段搜索对象管理器,若能查找到对应的对象解析例程ParseProcedure,则继续下一次的文件路径拆解,并基于下一次拆解出的路径段和之前已拆解出的路径段搜索对象管理器,若当前的文件路径经过循环解析被完全拆解完毕,则经过搜索对象管理器找到的文件对象解析例程ParseRoutine为当前文件路径对应的文件对象解析例程。
在实际中,调用者进程可以在用户态通过调用自定义的FSGetFileAttributes例程发起文件属性获取请求,操作***内核态驱动获取并校验所述来自用户态的请求,构建查询数据结构循环解析传入的文件路径,最终查找到对象管理器中维护的对象类型,这一过程有效对抗了内核态的劫持内险。此后,操作***内核态驱动构建并填充IRP请求数据包,发送至预先确定的文件***下层设备的原始地址处,此时文件***调用栈上的第三方过滤驱动(其他安全软件、驱动级恶意程序)被穿透(旁路,bypass)。简而言之,即本发明通过建立一条新的、可信的、可以穿透过滤驱动的文件操作执行路径,有效避免了传统操作***的文件执行路径上存在的风险。
步骤103、若所述目标文件的属性为只读,则去除所述目标文件的只读属性。
若文件具有只读属性,则文件将不允许被写入和删除,在这种情况下,则只能通过去除只读属性才能继续文件操作。
在Windows操作***用户态,可以使用函数SetFileAttributes、ZwSetInformationFile设置一个文件的属性(这一过程也是主动发起的);在Windows操作***内核态,可以使用函数ZwSetInformationFile设置文件属性。SetFileAttributes、ZwSetInformationFile等函数如果设置文件属性成功,函数会返回“非零”(相对“零”而言,一般是1),设置属性失败函数返回“零”,这一点在MSDN文档中有描述:
Return Values:
Nonzero indicates success.Zero indicates failure.
然而,在实际中,调用上述API设置文件属性存在极大的数据流被篡改的风险,操作***的分层调用方式,给驱动级的恶意程序带来了许多可趁之机。
因而,在本发明的一种优选实施例中,所述目标文件的只读属性需要通过调用自定义的用于文件属性更改的应用程序接口去除,具体可以包括如下子步骤:
子步骤S31、获取针对目标文件的属性更改请求,所述请求中包括调用者输入参数,所述输入参数中包括目标文件的路径;
子步骤S32、校验所述调用者输入参数,若校验通过,则依据所述目标文件路径在对象管理器中查找对应的文件对象解析例程;
子步骤S33、若查找到对应的文件对象解析例程,则依据所述文件对象解析例程生成I/O请求包,并发送至预置的文件***下层设备的原始地址;其中,所述I/O请求包中包括依据所述属性更改请求生成的目标文件属性更改操作信息;
子步骤S34、由所述文件***下层设备依据所述目标文件属性更改操作信息,去除目标文件的只读属性。
更具体而言,调用者进程可以在用户态通过调用自定义的FSSetFileAttributes例程发起文件属性的更改请求,其中,所述请求中包括调用者输入参数,所述输入参数中包括文件路径和用户态地址;用户态的FSSetFileAttributes例程会将调用者输入参数中的ANSI相关参数转换为UNICODE类型,并调用对应的文件操作接口宽字符FSSetFileAttributes例程;然后依据***平台的类型构建内核态结构参数,依据所述内核态结构参数生成相应的文件操作控制码,并发送至操作***内核态;操作***内核态驱动获取文件属性更改请求,校验调用者输入参数,并重构(Captured)所述用户态地址至内核态内存空间;FSSetFileAttributes例程的内核态部分会校验用户态传入参数,构建OpenPacket结构,循环解析文件路径格式并搜索对象管理器维护的拉链式对象Hash表。具体可以采用路径分隔符“\”拆解输入的文件路径,拆解出的路径部分搜索对象管理器维护的拉链式对象Hash表,查找出对应的ParseProcedure。在循环解析完毕时,便认为找到了对象的ParseRoutine例程。Parse Routine内部会构建并填充IRP请求数据包并发送至文件***下层设备的原始地址处,完成文件穿透的创建过程。此时,文件***调用栈上的第三方过滤驱动(其他安全软件、驱动级恶意程序)被旁路。然后由文件***下层设备执行具体的文件属性更改操作。
在具体实现中,所述文件属性更改操作至少包括去除只读属性的操作,还可以包括根据实际情况设置成其它属性的操作,如设置隐藏属性等,本发明对此不作限制。
针对文件解锁和粉碎的应用,本发明实施例还可以包括如下步骤:
在去除所述目标文件的只读属性后,调用操作***应用程序接口API或自定义的用于删除文件的应用程序接口,删除所述目标文件。
若调用操作***应用程序接口API删除所述目标文件,则具体可以包括如下子步骤:
子步骤S41、调用位于用户态的文件删除例程的操作***应用程序接口API:DeleteFile;
子步骤S42、通过所述DeleteFile例程调用位于用户态的文件删除例程的操作***原生应用程序接口Native API:ZwDeleteFile;
子步骤S43、通过所述用户态的ZwDeleteFile例程调用位于内核态的文件删除例程ZwDeleteFile,通过所述内核态的ZwDeleteFile例程删除目标文件。
若调用自定义的用于删除文件的应用程序接口删除所述目标文件,则具体可以包括如下子步骤:
子步骤S51、获取针对目标文件的删除请求,所述请求中包括调用者输入参数,所述输入参数中包括目标文件的路径;
子步骤S52、校验所述调用者输入参数,若校验通过,则依据所述目标文件路径在对象管理器中查找对应的文件对象解析例程;
子步骤S53、若查找到对应的文件对象解析例程,则依据所述文件对象解析例程生成I/O请求包,并发送至预置的文件***下层设备的原始地址;其中,所述I/O请求包中包括依据所述删除请求生成的目标文件删除操作信息;
子步骤S54、由所述文件***下层设备依据所述目标文件删除操作信息,删除所述目标文件。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。此外,上述实施例中相同相似的部分互相参见即可,本发明在此不再赘述。
参考图2,示出了本发明的一种文件解锁的装置实施例的结构框图,具体可以包括以下模块:
操作模块21,用于尝试针对目标文件执行删除操作或写入操作;
属性获取模块22,用于在所述目标文件无法执行删除或写入操作时,获取所述目标文件的属性;
只读属性去除模块23,用于在所述目标文件的属性为只读时,调用自定义的用于文件属性更改的应用程序接口去除所述目标文件的只读属性。
在本发明的一种优选实施例中,所述只读属性去除模块23可以包括以下子模块:
属性更改请求获取子模块,用于获取针对目标文件的属性更改请求,所述请求中包括调用者输入参数,所述输入参数中包括目标文件的路径;
参数校验子模块,用于校验所述调用者输入参数,若校验通过,则触发对象查找子模块;
对象查找子模块,用于依据所述目标文件路径在对象管理器中查找对应的文件对象解析例程;
第一IRP包发送子模块,用于在查找到对应的文件对象解析例程时,依据所述文件对象解析例程生成I/O请求包,所述I/O请求包中包括依据所述属性更改请求生成的目标文件属性更改操作信息,并将所述I/O请求包发送至预置的文件***下层设备的原始地址;由所述文件***下层设备依据所述目标文件属性更改操作信息,去除目标文件的只读属性。
在本发明的一种优选实施例中,所述属性获取模块22可以包括以下子模块:
属性查询请求获取子模块,用于获取针对目标文件的属性查询请求,所述请求中包括调用者输入参数,所述输入参数中包括目标文件的路径;
参数校验子模块,用于校验所述调用者输入参数,若校验通过,则触发对象查找子模块;
对象查找子模块,用于依据所述目标文件路径在对象管理器中查找对应的文件对象解析例程;
第二IRP包发送子模块,用于在查找到对应的文件对象解析例程时,依据所述文件对象解析例程生成I/O请求包,所述I/O请求包中包括依据所述属性查询请求生成的目标文件属性查询操作信息;并将所述I/O请求包发送至预置的文件***下层设备的原始地址,由所述文件***下层设备依据所述目标文件属性查询操作信息,查询目标文件的属性。
在本发明的另一种优选实施例中,所述属性获取模块22具体可以包括以下子模块:
用户态文件属性获取API调用子模块,用于调用位于用户态的文件属性获取例程的操作***应用程序接口API:GetFileAttributes;
用户态文件属性获取Native API调用子模块,用于通过所述GetFileAttributes例程调用位于用户态的文件信息查询例程的操作***原生应用程序接口Native API:ZwQueryInformationFile;
内核态文件属性获取Native API调用子模块,用于通过所述用户态的ZwQueryInformationFi1e例程调用位于内核态的文件信息查询例程ZwQueryInformationFi1e,由所述内核态的ZwQueryInformationFi1e例程查询目标文件的属性。
在文件解锁和粉碎的一种具体应用的示例中,本发明实施例还可以包括以下模块:
第一删除模块,用于在去除所述目标文件的只读属性后,调用操作***应用程序接口API删除所述目标文件,具体包括:
用户态文件删除API调用子模块,用于调用位于用户态的文件删除例程的操作***应用程序接口API:DeleteFile;
用户态文件删除Native API调用子模块,用于通过所述DeleteFile例程调用位于用户态的文件删除例程的操作***原生应用程序接口NativeAPI:ZwDeleteFile;
内核态文件删除Native API调用子模块,用于通过所述用户态的ZwDeleteFile例程调用位于内核态的文件删除例程ZwDeleteFile,通过所述内核态的ZwDeleteFile例程删除目标文件。
在文件解锁和粉碎的另一种具体应用的示例中,本发明实施例还可以包括以下模块:
第二删除模块,用于在去除所述目标文件的只读属性后,调用自定义的用于删除文件的应用程序接口删除所述目标文件,具体包括:
文件删除请求获取子模块,用于获取针对目标文件的删除请求,所述请求中包括调用者输入参数,所述输入参数中包括目标文件的路径;
参数校验子模块,用于校验所述调用者输入参数,若校验通过,则触发对象查找子模块;
对象查找子模块,用于依据所述目标文件路径在对象管理器中查找对应的文件对象解析例程;
第三IRP包发送子模块,用于在查找到对应的文件对象解析例程时,依据所述文件对象解析例程生成I/O请求包,所述I/O请求包中包括依据所述删除请求生成的目标文件删除操作信息,并将所述I/O请求包发送至预置的文件***下层设备的原始地址,由所述文件***下层设备依据所述目标文件删除操作信息,删除所述目标文件。
由于所述装置实施例基本相应于前述方法实施例,故本实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此就不赘述了。
本发明可用于众多通用或专用的计算***环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器***、基于微处理器的***、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何***或设备的分布式计算环境等等。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
以上对本发明所提供的一种文件解锁的方法和一种文件解锁的装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (11)

1.一种文件解锁的方法,其特征在于,包括:
尝试针对目标文件执行删除操作或写入操作;
若所述目标文件无法执行删除或写入操作,则获取所述目标文件的属性;
若所述目标文件的属性为只读,则调用自定义的用于文件属性更改的应用程序接口去除所述目标文件的只读属性;
其中,所述调用自定义的用于文件属性更改的应用程序接口去除目标文件只读属性的步骤包括:
获取针对目标文件的属性更改请求,所述请求中包括调用者输入参数,所述输入参数中包括目标文件的路径;
校验所述调用者输入参数,若校验通过,则依据所述目标文件路径在对象管理器中查找对应的文件对象解析例程;
若查找到对应的文件对象解析例程,则依据所述文件对象解析例程生成I/O请求包,并发送至预置的文件***下层设备的原始地址;其中,所述I/O请求包中包括依据所述属性更改请求生成的目标文件属性更改操作信息;
由所述文件***下层设备依据所述目标文件属性更改操作信息,去除目标文件的只读属性。
2.如权利要求1所述的方法,其特征在于,所述获取目标文件的属性的步骤包括:
调用自定义的用于获取文件属性的应用程序接口获取所述目标文件的属性,具体包括:
获取针对目标文件的属性查询请求,所述请求中包括调用者输入参数,所述输入参数中包括目标文件的路径;
校验所述调用者输入参数,若校验通过,则依据所述目标文件路径在对象管理器中查找对应的文件对象解析例程;
若查找到对应的文件对象解析例程,则依据所述文件对象解析例程生成I/O请求包,并发送至预置的文件***下层设备的原始地址;其中,所述I/O请求包中包括依据所述属性查询请求生成的目标文件属性查询操作信息;
由所述文件***下层设备依据所述目标文件属性查询操作信息,查询目标文件的属性。
3.如权利要求1所述的方法,其特征在于,所述获取目标文件的属性的步骤包括:
调用操作***的应用程序接口API获取所述目标文件的属性,具体包括:
调用位于用户态的文件属性获取例程的操作***应用程序接口API:GetFileAttributes;
通过所述GetFileAttributes例程调用位于用户态的文件信息查询例程的操作***原生应用程序接口NativeAPI:ZwQueryInformationFile;
通过所述用户态的ZwQueryInformationFile例程调用位于内核态的文件信息查询例程ZwQueryInformationFile,由所述内核态的ZwQueryInformationFile例程查询目标文件的属性。
4.如权利要求1或2所述的方法,其特征在于,在去除所述目标文件的只读属性后,还包括:
调用操作***应用程序接口API删除所述目标文件,具体包括:
调用位于用户态的文件删除例程的操作***应用程序接口API:DeleteFile;
通过所述DeleteFile例程调用位于用户态的文件删除例程的操作***原生应用程序接口NativeAPI:ZwDeleteFile;
通过所述用户态的ZwDeleteFile例程调用位于内核态的文件删除例程ZwDeleteFile,通过所述内核态的ZwDeleteFile例程删除目标文件。
5.如权利要求1或2所述的方法,其特征在于,在去除所述目标文件的只读属性后,还包括:
调用自定义的用于删除文件的应用程序接口删除所述目标文件,具体包括:
获取针对目标文件的删除请求,所述请求中包括调用者输入参数,所述输入参数中包括目标文件的路径;
校验所述调用者输入参数,若校验通过,则依据所述目标文件路径在对象管理器中查找对应的文件对象解析例程;
若查找到对应的文件对象解析例程,则依据所述文件对象解析例程生成I/O请求包,并发送至预置的文件***下层设备的原始地址;其中,所述I/O请求包中包括依据所述删除请求生成的目标文件删除操作信息;
由所述文件***下层设备依据所述目标文件删除操作信息,删除所述目标文件。
6.如权利要求1或2所述的方法,其特征在于,所述依据文件路径在对象管理器中查找对应的文件对象解析例程的步骤具体包括以下子步骤:
子步骤Sl、判断文件路径是否已经拆解完毕,若否,则执行子步骤S2;若是,则执行子步骤S4;
子步骤S2、按照路径分隔符拆解出文件路径中下一个待拆解的路径段;
子步骤S3、采用当前拆解出的路径段在对象管理器中搜索,判断是否存在对应的文件对象例程;若是,则返回子步骤Sl;若否,则执行子步骤S5;
子步骤S4、获得所述文件路径对应的文件对象解析例程;
子步骤S5、返回未找到对应文件对象解析例程的信息。
7.一种文件解锁的装置,其特征在于,包括:
操作模块,用于尝试针对目标文件执行删除操作或写入操作;
属性获取模块,用于在所述目标文件无法执行删除或写入操作时,获取所述目标文件的属性;
只读属性去除模块,用于在所述目标文件的属性为只读时,调用自定义的用于文件属性更改的应用程序接口去除所述目标文件的只读属性;
其中,所述只读属性去除模块包括:
属性更改请求获取子模块,用于获取针对目标文件的属性更改请求,所述请求中包括调用者输入参数,所述输入参数中包括目标文件的路径;
参数校验子模块,用于校验所述调用者输入参数,若校验通过,则触发对象查找子模块;
对象查找子模块,用于依据所述目标文件路径在对象管理器中查找对应的文件对象解析例程;
第二IRP包发送子模块,用于在查找到对应的文件对象解析例程时,依据所述文件对象解析例程生成I/O请求包,所述I/O请求包中包括依据所述属性更改请求生成的目标文件属性更改操作信息,并将所述I/O请求包发送至预置的文件***下层设备的原始地址;
由所述文件***下层设备依据所述目标文件属性更改操作信息,去除目标文件的只读属性。
8.如权利要求7所述的装置,其特征在于,所述属性获取模块包括:
属性查询请求获取子模块,用于获取针对目标文件的属性查询请求,所述请求中包括调用者输入参数,所述输入参数中包括目标文件的路径;
参数校验子模块,用于校验所述调用者输入参数,若校验通过,则触发对象查找子模块;
对象查找子模块,用于依据所述目标文件路径在对象管理器中查找对应的文件对象解析例程;
第二IRP包发送子模块,用于在查找到对应的文件对象解析例程时,依据所述文件对象解析例程生成I/O请求包,所述I/O请求包中包括依据所述属性查询请求生成的目标文件属性查询操作信息;并将所述I/O请求包发送至预置的文件***下层设备的原始地址,由所述文件***下层设备依据所述目标文件属性查询操作信息,查询目标文件的属性。
9.如权利要求7所述的装置,其特征在于,所述属性获取模块包括:
用户态文件属性获取API调用子模块,用于调用位于用户态的文件属性获取例程的操作***应用程序接口API:GetFileAttributes;
用户态文件属性获取Native API调用子模块,用于通过所述GetFileAttributes例程调用位于用户态的文件信息查询例程的操作***原生应用程序接口NativeAPI:ZwQueryInformationFile;
内核态文件属性获取Native API调用子模块,用于通过所述用户态的ZwQueryInformationFile例程调用位于内核态的文件信息查询例程ZwQueryInformationFile,由所述内核态的ZwQueryInformationFile例程查询目标文件的属性。
10.如权利要求7或8所述的装置,其特征在于,还包括:
第一删除模块,用于在去除所述目标文件的只读属性后,调用操作***应用程序接口API删除所述目标文件,具体包括:
用户态文件删除API调用子模块,用于调用位于用户态的文件删除例程的操作***应用程序接口API:DeleteFile;
用户态文件删除Native API调用子模块,用于通过所述DeleteFile例程调用位于用户态的文件删除例程的操作***原生应用程序接口NativeAP下:ZwDeleteFile;
内核态文件删除Native API调用子模块,用于通过所述用户态的ZwDeleteFile例程调用位于内核态的文件删除例程ZwDeleteFile,通过所述内核态的ZwDeleteFile例程删除目标文件。
11.如权利要求7或8所述的装置,其特征在于,还包括:
第二删除模块,用于在去除所述目标文件的只读属性后,调用自定义的用于删除文件的应用程序接口删除所述目标文件,具体包括:
文件删除请求获取子模块,用于获取针对目标文件的删除请求,所述请求中包括调用者输入参数,所述输入参数中包括目标文件的路径;
参数校验子模块,用于校验所述调用者输入参数,若校验通过,则触发对象查找子模块;
对象查找子模块,用于依据所述目标文件路径在对象管理器中查找对应的文件对象解析例程;
第三IRP包发送子模块,用于在查找到对应的文件对象解析例程时,依据所述文件对象解析例程生成I/O请求包,所述I/O请求包中包括依据所述删除请求生成的目标文件删除操作信息,并将所述I/O请求包发送至预置的文件***下层设备的原始地址,由所述文件***下层设备依据所述目标文件删除操作信息,删除所述目标文件。
CN201110175414.4A 2011-06-27 2011-06-27 一种文件解锁的方法及装置 Active - Reinstated CN102855436B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201110175414.4A CN102855436B (zh) 2011-06-27 2011-06-27 一种文件解锁的方法及装置
CN201510145493.2A CN104732142B (zh) 2011-06-27 2011-06-27 一种文件解锁的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110175414.4A CN102855436B (zh) 2011-06-27 2011-06-27 一种文件解锁的方法及装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201510145493.2A Division CN104732142B (zh) 2011-06-27 2011-06-27 一种文件解锁的方法及装置

Publications (2)

Publication Number Publication Date
CN102855436A CN102855436A (zh) 2013-01-02
CN102855436B true CN102855436B (zh) 2015-06-24

Family

ID=47402019

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110175414.4A Active - Reinstated CN102855436B (zh) 2011-06-27 2011-06-27 一种文件解锁的方法及装置

Country Status (1)

Country Link
CN (1) CN102855436B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105205109A (zh) * 2015-08-27 2015-12-30 浪潮(北京)电子信息产业有限公司 一种文件管理方法、装置及***
CN108038035A (zh) * 2017-12-08 2018-05-15 郑州云海信息技术有限公司 一种闪存读写状态的检测方法及相关装置
CN109121015A (zh) * 2018-10-17 2019-01-01 武汉斗鱼网络科技有限公司 一种转换弹幕格式的方法及相关装置
CN111078647B (zh) * 2019-11-22 2023-09-22 北京安兔兔科技有限公司 一种非压缩文件的创建、磁盘测试方法、装置及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101373505A (zh) * 2008-06-17 2009-02-25 华为技术有限公司 释放句柄的方法、装置及文件删除***
CN101452454A (zh) * 2007-11-30 2009-06-10 华为技术有限公司 文件集共享方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101452454A (zh) * 2007-11-30 2009-06-10 华为技术有限公司 文件集共享方法及装置
CN101373505A (zh) * 2008-06-17 2009-02-25 华为技术有限公司 释放句柄的方法、装置及文件删除***

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"另类方法赶走无法删除的病毒";开采;《网络与信息》;20080430;第2008年卷(第4期);第50页第1行-最后1行 *
"清除电脑中‘无法删除的病毒’";无;《计算机与网络》;20071015;第2007年卷(第19期);第36页第1行-最后1行 *

Also Published As

Publication number Publication date
CN102855436A (zh) 2013-01-02

Similar Documents

Publication Publication Date Title
CN103020524B (zh) 计算机病毒监控***
CN103049695B (zh) 一种计算机病毒的监控方法和装置
CN102855435B (zh) 一种文件解锁、粉碎的方法及装置
CN103246849A (zh) 一种Windows下基于增强型ROST的安全运行方法
CN103473501A (zh) 一种基于云安全的恶意软件追踪方法
CN102855436B (zh) 一种文件解锁的方法及装置
Hannousse et al. Handling webshell attacks: A systematic mapping and survey
Hou et al. Towards analyzing mongodb nosql security and designing injection defense solution
CN103473353B (zh) 面向Web安全的数据库安全防护方法和***
KR101674895B1 (ko) 자바 메소드 콜 그래프 기반의 자바 보안 취약점 분석 시스템
CN104732142A (zh) 一种文件解锁的方法及装置
Zhang et al. SQL injections through back-end of RFID system
CN102855437B (zh) 一种文件解锁的方法及装置
CN102855431B (zh) 一种文件解锁、粉碎的方法及装置
CN102855433B (zh) 一种文件解锁的方法及装置
CN102855438B (zh) 一种文件解锁的方法及装置
Dornhackl et al. Defining malicious behavior
Tumsa Application of artificial neural networks for detecting malicious embedded codes in word processing documents
CN102855434B (zh) 一种文件解锁的方法及装置
CN113114609A (zh) webshell检测取证方法及***
CN104732143B (zh) 一种文件解锁的方法及装置
Gadgil SQL injection prevention in banking
Medeiros et al. Demonstrating a tool for injection attack prevention in MySQL
CN116738427B (zh) 终端安全防护方法、装置、设备及存储介质
CN104715198A (zh) 一种文件解锁的方法及装置

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
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20151023

Address after: 100088 Beijing city Xicheng District xinjiekouwai Street 28, block D room 112 (Desheng Park)

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee after: Qizhi software (Beijing) Co.,Ltd.

Address before: The 4 layer 100016 unit of Beijing city Chaoyang District Jiuxianqiao Road No. 14 Building C

Patentee before: Qizhi software (Beijing) Co.,Ltd.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150624

Termination date: 20190627

CF01 Termination of patent right due to non-payment of annual fee
RR01 Reinstatement of patent right

Former decision: Patent right to terminate

Former decision publication date: 20200623

RR01 Reinstatement of patent right
CP01 Change in the name or title of a patent holder

Address after: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee after: Beijing Qizhi Business Consulting Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.

CP01 Change in the name or title of a patent holder
TR01 Transfer of patent right

Effective date of registration: 20220318

Address after: 1773, floor 17, floor 15, building 3, No. 10, Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: Sanliu0 Digital Security Technology Group Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Beijing Qizhi Business Consulting Co.,Ltd.

TR01 Transfer of patent right