一种文件解锁的方法及装置.pdf

上传人:1****2 文档编号:4262138 上传时间:2018-09-12 格式:PDF 页数:10 大小:421.31KB
返回 下载 相关 举报
摘要
申请专利号:

CN201110175549.0

申请日:

2011.06.27

公开号:

CN102855437A

公开日:

2013.01.02

当前法律状态:

授权

有效性:

有权

法律详情:

专利权的转移IPC(主分类):G06F 21/56变更事项:专利权人变更前权利人:奇智软件(北京)有限公司变更后权利人:北京奇虎科技有限公司变更事项:地址变更前权利人:100016 北京市朝阳区酒仙桥路14号兆维大厦4层东侧单元变更后权利人:100088 北京市西城区新街口外大街28号D座112室(德胜园区)变更事项:专利权人变更后权利人:奇智软件(北京)有限公司登记生效日:20150902|||授权|||实质审查的生效IPC(主分类):G06F 21/56申请日:20110627|||公开

IPC分类号:

G06F21/56(2013.01)I

主分类号:

G06F21/56

申请人:

奇智软件(北京)有限公司

发明人:

王宇; 郑文彬

地址:

100016 北京市朝阳区酒仙桥路14号兆维大厦4层东侧单元

优先权:

专利代理机构:

北京润泽恒知识产权代理有限公司 11319

代理人:

苏培华;赵娟

PDF下载: PDF下载
内容摘要

本发明提供了一种文件解锁的方法和装置,其中,所述方法包括:判断目标文件是否存在句柄占用的情形;若是,则遍历操作系统的句柄表,获得目标文件对应的文件句柄File?Handle,并获取所述文件句柄File?Handle所属的进程;切换到所述进程,基于所述进程发起目标文件句柄的关闭操作。本发明所提供的文件解锁、粉碎、粉碎机制不仅安全、可靠、成功率高,并且可以在复杂的客户端环境中识别恶意程序的文件自保护行为并加以对抗,增强了和驱动级恶意程序攻防的对抗能力。

权利要求书

权利要求书一种文件解锁的方法,其特征在于,包括:
判断目标文件是否存在句柄占用的情形;
若是,则遍历操作系统的句柄表,获得目标文件对应的文件句柄FileHandle,并获取所述文件句柄File Handle所属的进程;
切换到所述进程,基于所述进程发起目标文件句柄的关闭操作。
如权利要求1所述的方法,其特征在于,在判断目标文件是否存在句柄占用的情形之前,还包括:
尝试打开或删除目标文件;
若无法打开或删除目标文件,则读取返回的错误码信息;
所述目标文件是否存在句柄占用的情形依据所述错误码信息判断。
如权利要求2所述的方法,其特征在于,若所述错误码信息为STATUS_DELETE_PENDING,数值为0xC0000056L;或为,ERROR_ACCESS_DENIED,数值为5,则判定所述目标文件存在句柄占用的情形。
如权利要求2或3所述的方法,其特征在于,还包括:
所述目标文件句柄的关闭操作完成后,所述目标文件被清除。
如权利要求1、2或3所述的方法,其特征在于,所述目标文件具有对应的全路径;所述句柄表位于操作系统内核,其中维护有所有进程打开的句柄信息,所述句柄信息中包括文件句柄File Handle的信息,所述文件句柄File Handle的信息中包括各文件句柄File Handle对应的文件的全路径,所述遍历操作系统的句柄表,获得目标文件对应的文件句柄File Handle的步骤包括:
将目标文件的全路径与各文件句柄File Handle对应的文件的全路径进行对比,若找到一致的文件全路径,则提取该文件全路径对应的文件句柄File Handle为所述目标文件对应的文件句柄File Handle。
如权利要求5所述的方法,其特征在于,还包括:
判断所述文件句柄File Handle所属的进程是否能切换,若在能切换时执行所述切换至进程的步骤。
如权利要求6所述的方法,其特征在于,所述切换到所述进程的操作是通过调用操作系统应用程序接口API的堆栈连接进程例程KeStackAttachProcess执行的;所述遍历操作系统的句柄表的操作是通过调用操作系统应用程序接口API的系统信息查询例程ZwQuerySystemInformation中的句柄信息系统SystemHandleInformation的功能执行的。
如权利要求1所述的方法,其特征在于,所述基于进程发起目标文件句柄的关闭操作的步骤包括:
以所述进程的名义发起文件句柄关闭操作请求;
依据所述请求调用Windows操作系统内核态的句柄关闭例程ZwClose,所述ZwClose例程执行文件句柄关闭操作。
一种文件解锁的装置,其特征在于,包括:
判断模块,用于判断目标文件是否存在句柄占用的情形;若是,则调用句柄表遍历模块;
句柄表遍历模块,用于遍历操作系统的句柄表,获得目标文件对应的文件句柄File Handle;
进程获取模块,用于获取所述文件句柄File Handle所属的进程;
进程切换模块,用于切换到所述进程;
句柄关闭操作发起模块,用于基于所述进程发起目标文件句柄的关闭操作。
如权利要求9所述的装置,其特征在于,所述目标文件是否存在句柄占用的情形依据所述错误码信息判断,所述的装置还包括:
文件操作模块,用于尝试打开或删除目标文件;
错误码读取模块,用于在无法打开或删除目标文件时,读取返回的错误码信息。
如权利要求9或10所述的装置,其特征在于,所述目标文件具有对应的全路径;所述句柄表位于操作系统内核,其中维护有所有进程打开的句柄信息,所述句柄信息中包括文件句柄File Handle的信息,所述文件句柄File Handle的信息中包括各文件句柄File Handle对应的文件的全路径,所述目标文件对应的文件句柄File Handle通过所述全路径对比获得。
如权利要求11所述的装置,其特征在于,还包括:
切换判断模块,用于判断所述文件句柄File Handle所属的进程是否能切换,以及,在能切换时调用进程切换模块。
如权利要求10所述的装置,其特征在于,所述句柄关闭操作发起模块包括:
请求发起子模块,用于以所述进程的名义发起文件句柄关闭操作请求;
例程调用子模块,用于依据所述请求调用Windows操作系统内核态的句柄关闭例程ZwClose,所述ZwClose例程执行文件句柄关闭操作。

说明书

说明书一种文件解锁的方法及装置
技术领域
本发明涉及计算机安全的技术领域,特别是涉及一种文件解锁的方法和一种文件解锁的装置。
背景技术
计算机病毒是指“编制者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序代码。计算机一旦染上病毒,计算机通常表现为其文件被增加、删出、改变名称或属性、移动到其它目录下,病毒对计算机文件的这些操作,可能会导致正常的程序无法运行、计算机操作系统崩溃、计算机被远程控制、用户信息被盗用等一系列的问题。
为了保证计算机的安全运行,需要对计算机中感染病毒的文件进行病毒查杀,以防止和清除病毒的破坏。在安全软件领域,针对染毒计算机文件的“删除”与“反删除”是安全软件和恶意程序(计算机病毒)对抗的永恒主题之一。
现有技术中的病毒,往往通过文件句柄持有等手段给染毒文件加上了加密锁,采用常规手段无法破解加密锁即无法删除染毒文件,这些手段阻止杀毒软件查杀染毒文件。安全软件查杀病毒的过程,可以理解为对染毒文件进行解锁和粉碎。现有安全软件,对染毒文件的解锁和粉碎手段单一,无法破除染毒文件设置的层层保护,对抗能力不强。传统安全软件厂商只解决了部分“反删除”问题,在操作系统内核态的攻防上往往体现出一定的能力缺失,驱动级恶意程序(Rootkit)对抗能力偏弱。
因此,目前需要本领域技术人员迫切解决的一个技术问题就是:提出一种文件解锁的处理机制,用以在复杂的客户端环境中识别恶意程序的文件自保护行为并加以对抗,增强和驱动级恶意程序攻防的对抗能力。
发明内容
本发明所要解决的技术问题是提供一种文件解锁的方法,以增强和驱动级恶意程序攻防的对抗能力。
本发明还提供了一种文件解锁的装置,用以保证上述方法在实际中的应用及实现。
为了解决上述问题,本发明实施例公开了一种文件解锁的方法,包括:
判断目标文件是否存在句柄占用的情形;
若是,则遍历操作系统的句柄表,获得目标文件对应的文件句柄File Handle,并获取所述文件句柄File Handle所属的进程;
切换到所述进程,基于所述进程发起目标文件句柄的关闭操作。
优选的,在判断目标文件是否存在句柄占用的情形之前,还包括:
尝试打开或删除目标文件;
若无法打开或删除目标文件,则读取返回的错误码信息;
所述目标文件是否存在句柄占用的情形依据所述错误码信息判断。
优选的,若所述错误码信息为STATUS_DELETE_PENDING,数值为0xC0000056L;或为,ERROR_ACCESS_DENIED,数值为5,则判定所述目标文件存在句柄占用的情形。
优选的,所述的方法,还包括:
所述目标文件句柄的关闭操作完成后,所述目标文件被清除。
优选的,所述目标文件具有对应的全路径;所述句柄表位于操作系统内核,其中维护有所有进程打开的句柄信息,所述句柄信息中包括文件句柄File Handle的信息,所述文件句柄File Handle的信息中包括各文件句柄File Handle对应的文件的全路径,所述遍历操作系统的句柄表,获得目标文件对应的文件句柄File Handle的步骤包括:
将目标文件的全路径与各文件句柄File Handle对应的文件的全路径进行对比,若找到一致的文件全路径,则提取该文件全路径对应的文件句柄File Handle为所述目标文件对应的文件句柄File Handle。
优选的,所述的方法,还包括:
判断所述文件句柄File Handle所属的进程是否能切换,若在能切换时执行所述切换至进程的步骤。
优选的,所述切换到所述进程的操作是通过调用操作系统应用程序接口API的堆栈连接进程例程KeStackAttachProcess执行的;所述遍历操作系统的句柄表的操作是通过调用操作系统应用程序接口API的系统信息查询例程ZwQuerySystemInformation中的句柄信息系统SystemHandleInformation的功能执行的。
优选的,所述基于进程发起目标文件句柄的关闭操作的步骤包括:
以所述进程的名义发起文件句柄关闭操作请求;
依据所述请求调用Windows操作系统内核态的句柄关闭例程ZwClose,所述ZwClose例程执行文件句柄关闭操作。
本发明实施例还公开了一种文件解锁的装置,包括:
判断模块,用于判断目标文件是否存在句柄占用的情形;若是,则调用句柄表遍历模块;
句柄表遍历模块,用于遍历操作系统的句柄表,获得目标文件对应的文件句柄File Handle;
进程获取模块,用于获取所述文件句柄File Handle所属的进程;
进程切换模块,用于切换到所述进程;
句柄关闭操作发起模块,用于基于所述进程发起目标文件句柄的关闭操作。
优选的,所述目标文件是否存在句柄占用的情形依据所述错误码信息判断,所述的装置还包括:
文件操作模块,用于尝试打开或删除目标文件;
错误码读取模块,用于在无法打开或删除目标文件时,读取返回的错误码信息。
优选的,所述目标文件具有对应的全路径;所述句柄表位于操作系统内核,其中维护有所有进程打开的句柄信息,所述句柄信息中包括文件句柄File Handle的信息,所述文件句柄File Handle的信息中包括各文件句柄File Handle对应的文件的全路径,所述目标文件对应的文件句柄File Handle通过所述全路径对比获得。
优选的,所述的装置,还包括:
切换判断模块,用于判断所述文件句柄File Handle所属的进程是否能切换,以及,在能切换时调用进程切换模块。
优选的,所述句柄关闭操作发起模块包括:
请求发起子模块,用于以所述进程的名义发起文件句柄关闭操作请求;
例程调用子模块,用于依据所述请求调用Windows操作系统内核态的句柄关闭例程ZwClose,所述ZwClose例程执行文件句柄关闭操作。
与现有技术相比,本发明具有以下优点:
本发明实施例通过在目标文件存在句柄占用的情形时,遍历操作系统的句柄表,获得目标文件对应的文件句柄File Handle,并获取所述文件句柄File Handle所属的进程;然后切换到所述进程,以该进程的名义发起目标文件句柄的关闭操作,从而实现文件解锁和粉碎过程。本发明所提供的文件解锁、粉碎、粉碎机制不仅安全、可靠、成功率高,并且可以在复杂的客户端环境中识别恶意程序的文件自保护行为并加以对抗,增强了和驱动级恶意程序攻防的对抗能力。
附图说明
图1是本发明的一种文件解锁的方法实施例的步骤流程图;
图2是本发明的一种文件解锁的装置实施例的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参考图1,示出了本发明的一种文件解锁的方法实施例的步骤流程图,具体可以包括以下步骤:
步骤101、尝试打开或删除目标文件;
需要说明的是,在本发明实施例中,所述文件包括WINDOWS操作系统中所支持类型的文件。所述文件打开不是指通过双击鼠标或按回车键等触发方式打开文件(如*.exe、*.doc等类型的文件);而是指用操作系统API或本发明的自定义的应用程序接口BAPI(应用本发明,可以在操作系统用户态接口完整实现一套文件操作调用库)的CreateFile()函数等打开文件、得到文件句柄的操作,因为只有得到文件句柄后才可以进一步操作该文件。
从函数调用方法角度而言,本发明实施例中所指文件“打开”主要包括以下几种情形:
1、使用Windows标准API CreateFile函数打开目标文件;
2、使用Windows Native API ZwCreateFile/NtCreateFile函数打开目标文件;
3、使用Windows Native API ZwOpenFile/NtOpenFile函数打开目标文件。
其中,CreateFile的参数dwCreationDisposition可以控制函数行为是“创建新文件”还是“打开已经存在的文件”。
在本发明实施例中,所述打开或删除目标文件的操作可以通过调用微软操作系统的应用程序接口(API)的文件创建例程CreateFile或文件删除例程DeleteFile执行;也可以通过调用自定义的应用程序接口(BAPI)的文件创建例程FSCreateFile或文件删除例程FSDeleteFile执行;本发明对此不作限制。
步骤102、若无法打开或删除目标文件,则读取返回的错误码信息,依据所述错误码信息判断所述目标文件是否存在句柄占用的情形;
例如,假设待打开或删除的目标文件名(路径)是C:\test.txt,若无法打开或删除该路径下的文件,并且操作系统内核态返回的错误码信息为:STATUS_DELETE_PENDING,数值为0xC0000056L;和/或,操作系统用户态返回的错误码信息为:拒绝访问:ERROR_ACCESS_DENIED,数值为5。则可以判定所述目标文件存在句柄占用的情形。更具体而言,STATUS_DELETE_PENDING(延时删除)是微软操作系统内核定义的一个状态(错误码),它表示某文件已被打开,但同时它也被要求删除,只是目前还有进程持有文件的句柄(持有意味着还有引用计数)。当最后一个文件持有者关闭句柄时,文件系统驱动会自动从磁盘清除这个文件。在“最后一个文件持有者关闭句柄前”,任何进程都无法再打开这个文件。由于内核认为文件都要被删除了,就不用再被打开了。
其中,所述“操作系统内核态返回的错误码信息”和“操作系统用户态返回的错误码信息”的概念是微软操作系统定义的两套错误码机制,其中内核态错误码可以通过函数RtlNtStatusToDosError转换成用户态错误码,微软这么设计的原因是为了“隔离”内核的输出,另外也为了向下兼容。
步骤103、若所述目标文件存在句柄占用的情形,则遍历操作系统的句柄表,获得目标文件对应的文件句柄File Handle,并获取所述文件句柄File Handle所属的进程;
在具体实现中,所述目标文件具有对应的全路径;所述句柄表位于操作系统内核,其中维护有所有进程打开的句柄信息,所述句柄信息中包括文件句柄File Handle的信息,所述文件句柄File Handle的信息中包括各文件句柄File Handle对应的文件的全路径(即文件句柄在创建时对应的磁盘路径)。因而,作为本发明实施例具体应用的一种示例,所述遍历操作系统的句柄表,获得目标文件对应的文件句柄File Handle的步骤具体可以为:
将目标文件的全路径与各文件句柄File Handle对应的文件的全路径进行对比,若找到一致的文件全路径,则提取该文件全路径对应的文件句柄File Handle为所述目标文件对应的文件句柄File Handle。
在实际中,Windows操作系统会在其内核维护所有进程打开的句柄信息,维护的结构被称作“句柄表”。句柄是区分类型存储的,同时,每个句柄都归属于一个特定的进程,常见的句柄类型包括:File(文件)、Process(进程)、Thread(线程)、Key(键值)等。本发明实施例主要是针对文件句柄(File Handle)而言,应用本实施例,通过枚举每一个文件句柄所对应的文件全路径,并和待删除文件的全路径进行比较,如果相等就认为找到了目标。而此时目标句柄所属进程也得到了明确(每个句柄都归属于一个特定的进程),切换到那个进程,以它的名义(上下文)发起目标文件解锁操作请求即可。
公知的是,微软句柄表的结构是不公开的,Windows操作系统每一个大版本都会变动句柄表的设计方案,所以如何安全、稳定的遍历句柄表是本领域技术人员需要关注的问题,例如,在遍历时需要考虑跨平台和遍历同步等问题。作为本发明实施例一种具体应用的优选示例,所述遍历操作系统的句柄表的操作可以通过调用操作系统应用程序接口API的系统信息查询例程ZwQuerySystemInformation中的句柄信息系统SystemHandleInformation的功能执行。
当然,上述方法仅仅用作示例,本领域技术人员根据实际情况采用任一种方式遍历句柄表都是可行的,本发明对此不作限制。
步骤104、切换到所述进程,发起目标文件句柄的关闭操作。
在本发明的一种优选实施例中,所述切换到所述进程的操作可以通过调用操作系统应用程序接口API的堆栈连接进程例程KeStackAttachProcess执行。切换到所述目标文件的文件句柄File Handle所属的进程可以理解为切换到“句柄持有者”进程空间,然后以这个进程的名义(进程上下文,context)发起目标文件解锁操作的请求。
在具体实现中,进程切换前需要进一步考虑目标进程是否真的可供切换;例如,目标进程正在被结束往往是不能切换的,所以要引入一定的同步机制(锁机制)等;因此,作为本发明实施例在具体实现中的一种示例,还可以在判断所述文件句柄File Handle所属的进程是否能切换,并在能切换时才执行所述切换至进程的步骤。
在本发明的一种优选实施例中,所述基于进程发起目标文件句柄的关闭操作的步骤具体可以包括以下子步骤:
子步骤S11、以所述进程的名义发起文件句柄关闭操作请求;
子步骤S12、依据所述请求调用Windows操作系统内核态的句柄关闭例程ZwClose,所述ZwClose例程执行文件句柄关闭操作。
在具体实现中,当所述目标文件句柄的关闭操作完成后,所述目标文件即被清除,从而完成文件解锁及粉碎的过程。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
参考图2,示出了本发明的一种文件解锁的装置实施例的结构框图,具体可以包括以下模块:
判断模块21,用于判断目标文件是否存在句柄占用的情形;若是,则调用句柄表遍历模块;
句柄表遍历模块22,用于遍历操作系统的句柄表,获得目标文件对应的文件句柄File Handle;
进程获取模块23,用于获取所述文件句柄File Handle所属的进程;
进程切换模块24,用于切换到所述进程;
句柄关闭操作发起模块25,用于基于所述进程发起目标文件句柄的关闭操作。
在具体实现中,所述目标文件是否存在句柄占用的情形可以依据所述错误码信息判断,在这种情况下,所述的装置还可以包括以下模块:
文件操作模块,用于尝试打开或删除目标文件;
错误码读取模块,用于在无法打开或删除目标文件时,读取返回的错误码信息。
针对在Windows操作系统中的具体应用而言,所述目标文件具有对应的全路径;所述句柄表位于操作系统内核,其中维护有所有进程打开的句柄信息,所述句柄信息中包括文件句柄File Handle的信息,所述文件句柄File Handle的信息中包括各文件句柄File Handle对应的文件的全路径,所述目标文件对应的文件句柄File Handle通过所述全路径对比获得。
在具体实现中,本发明实施例还可以包括以下模块:
切换判断模块,用于判断所述文件句柄File Handle所属的进程是否能切换,以及,在能切换时调用进程切换模块。
在本发明的一种优选实施例中,所述句柄关闭操作发起模块具体可以包括以下子模块:
请求发起子模块,用于以所述进程的名义发起文件句柄关闭操作请求;
例程调用子模块,用于依据所述请求调用Windows操作系统内核态的句柄关闭例程ZwClose,所述ZwClose例程执行文件句柄关闭操作。
针对文件解锁和粉碎的应用而言,在所述目标文件句柄的关闭操作完成后,所述目标文件即被清除。
由于所述装置实施例基本相应于前述方法实施例,故本实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此就不赘述了。
本发明可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
以上对本发明所提供的一种文件解锁的方法和一种文件解锁的装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

一种文件解锁的方法及装置.pdf_第1页
第1页 / 共10页
一种文件解锁的方法及装置.pdf_第2页
第2页 / 共10页
一种文件解锁的方法及装置.pdf_第3页
第3页 / 共10页
点击查看更多>>
资源描述

《一种文件解锁的方法及装置.pdf》由会员分享,可在线阅读,更多相关《一种文件解锁的方法及装置.pdf(10页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 102855437 A (43)申请公布日 2013.01.02 C N 1 0 2 8 5 5 4 3 7 A *CN102855437A* (21)申请号 201110175549.0 (22)申请日 2011.06.27 G06F 21/56(2013.01) (71)申请人奇智软件(北京)有限公司 地址 100016 北京市朝阳区酒仙桥路14号 兆维大厦4层东侧单元 (72)发明人王宇 郑文彬 (74)专利代理机构北京润泽恒知识产权代理有 限公司 11319 代理人苏培华 赵娟 (54) 发明名称 一种文件解锁的方法及装置 (57) 摘要 本发明提供了一种文件。

2、解锁的方法和装置, 其中,所述方法包括:判断目标文件是否存在句 柄占用的情形;若是,则遍历操作系统的句柄表, 获得目标文件对应的文件句柄File Handle,并获 取所述文件句柄File Handle所属的进程;切换 到所述进程,基于所述进程发起目标文件句柄的 关闭操作。本发明所提供的文件解锁、粉碎、粉碎 机制不仅安全、可靠、成功率高,并且可以在复杂 的客户端环境中识别恶意程序的文件自保护行为 并加以对抗,增强了和驱动级恶意程序攻防的对 抗能力。 (51)Int.Cl. 权利要求书2页 说明书6页 附图1页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 2 页 说明。

3、书 6 页 附图 1 页 1/2页 2 1.一种文件解锁的方法,其特征在于,包括: 判断目标文件是否存在句柄占用的情形; 若是,则遍历操作系统的句柄表,获得目标文件对应的文件句柄FileHandle,并获取所 述文件句柄File Handle所属的进程; 切换到所述进程,基于所述进程发起目标文件句柄的关闭操作。 2.如权利要求1所述的方法,其特征在于,在判断目标文件是否存在句柄占用的情形 之前,还包括: 尝试打开或删除目标文件; 若无法打开或删除目标文件,则读取返回的错误码信息; 所述目标文件是否存在句柄占用的情形依据所述错误码信息判断。 3.如权利要求2所述的方法,其特征在于,若所述错误码信。

4、息为STATUS_DELETE_ PENDING,数值为0xC0000056L;或为,ERROR_ACCESS_DENIED,数值为5,则判定所述目标文 件存在句柄占用的情形。 4.如权利要求2或3所述的方法,其特征在于,还包括: 所述目标文件句柄的关闭操作完成后,所述目标文件被清除。 5.如权利要求1、2或3所述的方法,其特征在于,所述目标文件具有对应的全路径;所 述句柄表位于操作系统内核,其中维护有所有进程打开的句柄信息,所述句柄信息中包括 文件句柄File Handle的信息,所述文件句柄File Handle的信息中包括各文件句柄File Handle对应的文件的全路径,所述遍历操作系。

5、统的句柄表,获得目标文件对应的文件句柄 File Handle的步骤包括: 将目标文件的全路径与各文件句柄File Handle对应的文件的全路径进行对比,若找 到一致的文件全路径,则提取该文件全路径对应的文件句柄File Handle为所述目标文件 对应的文件句柄File Handle。 6.如权利要求5所述的方法,其特征在于,还包括: 判断所述文件句柄File Handle所属的进程是否能切换,若在能切换时执行所述切换 至进程的步骤。 7.如权利要求6所述的方法,其特征在于,所述切换到所述进程的操作是通过调用 操作系统应用程序接口API的堆栈连接进程例程KeStackAttachProce。

6、ss执行的;所述遍 历操作系统的句柄表的操作是通过调用操作系统应用程序接口API的系统信息查询例程 ZwQuerySystemInformation中的句柄信息系统SystemHandleInformation的功能执行的。 8.如权利要求1所述的方法,其特征在于,所述基于进程发起目标文件句柄的关闭操 作的步骤包括: 以所述进程的名义发起文件句柄关闭操作请求; 依据所述请求调用Windows操作系统内核态的句柄关闭例程ZwClose,所述ZwClose例 程执行文件句柄关闭操作。 9.一种文件解锁的装置,其特征在于,包括: 判断模块,用于判断目标文件是否存在句柄占用的情形;若是,则调用句柄表遍。

7、历模 块; 句柄表遍历模块,用于遍历操作系统的句柄表,获得目标文件对应的文件句柄File 权 利 要 求 书CN 102855437 A 2/2页 3 Handle; 进程获取模块,用于获取所述文件句柄File Handle所属的进程; 进程切换模块,用于切换到所述进程; 句柄关闭操作发起模块,用于基于所述进程发起目标文件句柄的关闭操作。 10.如权利要求9所述的装置,其特征在于,所述目标文件是否存在句柄占用的情形依 据所述错误码信息判断,所述的装置还包括: 文件操作模块,用于尝试打开或删除目标文件; 错误码读取模块,用于在无法打开或删除目标文件时,读取返回的错误码信息。 11.如权利要求9或。

8、10所述的装置,其特征在于,所述目标文件具有对应的全路径;所 述句柄表位于操作系统内核,其中维护有所有进程打开的句柄信息,所述句柄信息中包括 文件句柄File Handle的信息,所述文件句柄File Handle的信息中包括各文件句柄File Handle对应的文件的全路径,所述目标文件对应的文件句柄File Handle通过所述全路径 对比获得。 12.如权利要求11所述的装置,其特征在于,还包括: 切换判断模块,用于判断所述文件句柄File Handle所属的进程是否能切换,以及,在 能切换时调用进程切换模块。 13.如权利要求10所述的装置,其特征在于,所述句柄关闭操作发起模块包括: 。

9、请求发起子模块,用于以所述进程的名义发起文件句柄关闭操作请求; 例程调用子模块,用于依据所述请求调用Windows操作系统内核态的句柄关闭例程 ZwClose,所述ZwClose例程执行文件句柄关闭操作。 权 利 要 求 书CN 102855437 A 1/6页 4 一种文件解锁的方法及装置 技术领域 0001 本发明涉及计算机安全的技术领域,特别是涉及一种文件解锁的方法和一种文件 解锁的装置。 背景技术 0002 计算机病毒是指“编制者在计算机程序中插入的破坏计算机功能或者破坏数据, 影响计算机使用并且能够自我复制的一组计算机指令或者程序代码。计算机一旦染上病 毒,计算机通常表现为其文件被增。

10、加、删出、改变名称或属性、移动到其它目录下,病毒对计 算机文件的这些操作,可能会导致正常的程序无法运行、计算机操作系统崩溃、计算机被远 程控制、用户信息被盗用等一系列的问题。 0003 为了保证计算机的安全运行,需要对计算机中感染病毒的文件进行病毒查杀,以 防止和清除病毒的破坏。在安全软件领域,针对染毒计算机文件的“删除”与“反删除”是 安全软件和恶意程序(计算机病毒)对抗的永恒主题之一。 0004 现有技术中的病毒,往往通过文件句柄持有等手段给染毒文件加上了加密锁,采 用常规手段无法破解加密锁即无法删除染毒文件,这些手段阻止杀毒软件查杀染毒文件。 安全软件查杀病毒的过程,可以理解为对染毒文件。

11、进行解锁和粉碎。现有安全软件,对染毒 文件的解锁和粉碎手段单一,无法破除染毒文件设置的层层保护,对抗能力不强。传统安全 软件厂商只解决了部分“反删除”问题,在操作系统内核态的攻防上往往体现出一定的能力 缺失,驱动级恶意程序(Rootkit)对抗能力偏弱。 0005 因此,目前需要本领域技术人员迫切解决的一个技术问题就是:提出一种文件解 锁的处理机制,用以在复杂的客户端环境中识别恶意程序的文件自保护行为并加以对抗, 增强和驱动级恶意程序攻防的对抗能力。 发明内容 0006 本发明所要解决的技术问题是提供一种文件解锁的方法,以增强和驱动级恶意程 序攻防的对抗能力。 0007 本发明还提供了一种文件。

12、解锁的装置,用以保证上述方法在实际中的应用及实 现。 0008 为了解决上述问题,本发明实施例公开了一种文件解锁的方法,包括: 0009 判断目标文件是否存在句柄占用的情形; 0010 若是,则遍历操作系统的句柄表,获得目标文件对应的文件句柄File Handle,并 获取所述文件句柄File Handle所属的进程; 0011 切换到所述进程,基于所述进程发起目标文件句柄的关闭操作。 0012 优选的,在判断目标文件是否存在句柄占用的情形之前,还包括: 0013 尝试打开或删除目标文件; 0014 若无法打开或删除目标文件,则读取返回的错误码信息; 说 明 书CN 102855437 A 2。

13、/6页 5 0015 所述目标文件是否存在句柄占用的情形依据所述错误码信息判断。 0016 优选的,若所述错误码信息为STATUS_DELETE_PENDING,数值为0xC0000056L;或 为,ERROR_ACCESS_DENIED,数值为5,则判定所述目标文件存在句柄占用的情形。 0017 优选的,所述的方法,还包括: 0018 所述目标文件句柄的关闭操作完成后,所述目标文件被清除。 0019 优选的,所述目标文件具有对应的全路径;所述句柄表位于操作系统内核,其中维 护有所有进程打开的句柄信息,所述句柄信息中包括文件句柄File Handle的信息,所述文 件句柄File Handle。

14、的信息中包括各文件句柄File Handle对应的文件的全路径,所述遍 历操作系统的句柄表,获得目标文件对应的文件句柄File Handle的步骤包括: 0020 将目标文件的全路径与各文件句柄File Handle对应的文件的全路径进行对比, 若找到一致的文件全路径,则提取该文件全路径对应的文件句柄File Handle为所述目标 文件对应的文件句柄File Handle。 0021 优选的,所述的方法,还包括: 0022 判断所述文件句柄File Handle所属的进程是否能切换,若在能切换时执行所述 切换至进程的步骤。 0023 优选的,所述切换到所述进程的操作是通过调用操作系统应用程序。

15、接口API的堆 栈连接进程例程KeStackAttachProcess执行的;所述遍历操作系统的句柄表的操作是通 过调用操作系统应用程序接口API的系统信息查询例程ZwQuerySystemInformation中的 句柄信息系统SystemHandleInformation的功能执行的。 0024 优选的,所述基于进程发起目标文件句柄的关闭操作的步骤包括: 0025 以所述进程的名义发起文件句柄关闭操作请求; 0026 依据所述请求调用Windows操作系统内核态的句柄关闭例程ZwClose,所述 ZwClose例程执行文件句柄关闭操作。 0027 本发明实施例还公开了一种文件解锁的装置,包。

16、括: 0028 判断模块,用于判断目标文件是否存在句柄占用的情形;若是,则调用句柄表遍历 模块; 0029 句柄表遍历模块,用于遍历操作系统的句柄表,获得目标文件对应的文件句柄 File Handle; 0030 进程获取模块,用于获取所述文件句柄File Handle所属的进程; 0031 进程切换模块,用于切换到所述进程; 0032 句柄关闭操作发起模块,用于基于所述进程发起目标文件句柄的关闭操作。 0033 优选的,所述目标文件是否存在句柄占用的情形依据所述错误码信息判断,所述 的装置还包括: 0034 文件操作模块,用于尝试打开或删除目标文件; 0035 错误码读取模块,用于在无法打开。

17、或删除目标文件时,读取返回的错误码信息。 0036 优选的,所述目标文件具有对应的全路径;所述句柄表位于操作系统内核,其中维 护有所有进程打开的句柄信息,所述句柄信息中包括文件句柄File Handle的信息,所述文 件句柄File Handle的信息中包括各文件句柄File Handle对应的文件的全路径,所述目 标文件对应的文件句柄File Handle通过所述全路径对比获得。 说 明 书CN 102855437 A 3/6页 6 0037 优选的,所述的装置,还包括: 0038 切换判断模块,用于判断所述文件句柄File Handle所属的进程是否能切换,以 及,在能切换时调用进程切换模。

18、块。 0039 优选的,所述句柄关闭操作发起模块包括: 0040 请求发起子模块,用于以所述进程的名义发起文件句柄关闭操作请求; 0041 例程调用子模块,用于依据所述请求调用Windows操作系统内核态的句柄关闭例 程ZwClose,所述ZwClose例程执行文件句柄关闭操作。 0042 与现有技术相比,本发明具有以下优点: 0043 本发明实施例通过在目标文件存在句柄占用的情形时,遍历操作系统的句柄表, 获得目标文件对应的文件句柄File Handle,并获取所述文件句柄File Handle所属的进 程;然后切换到所述进程,以该进程的名义发起目标文件句柄的关闭操作,从而实现文件解 锁和粉。

19、碎过程。本发明所提供的文件解锁、粉碎、粉碎机制不仅安全、可靠、成功率高,并且 可以在复杂的客户端环境中识别恶意程序的文件自保护行为并加以对抗,增强了和驱动级 恶意程序攻防的对抗能力。 附图说明 0044 图1是本发明的一种文件解锁的方法实施例的步骤流程图; 0045 图2是本发明的一种文件解锁的装置实施例的结构框图。 具体实施方式 0046 为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实 施方式对本发明作进一步详细的说明。 0047 参考图1,示出了本发明的一种文件解锁的方法实施例的步骤流程图,具体可以包 括以下步骤: 0048 步骤101、尝试打开或删除目标文件; 0。

20、049 需要说明的是,在本发明实施例中,所述文件包括WINDOWS操作系统中所支持类 型的文件。所述文件打开不是指通过双击鼠标或按回车键等触发方式打开文件(如*.exe、 *.doc等类型的文件);而是指用操作系统API或本发明的自定义的应用程序接口BAPI(应 用本发明,可以在操作系统用户态接口完整实现一套文件操作调用库)的CreateFile()函 数等打开文件、得到文件句柄的操作,因为只有得到文件句柄后才可以进一步操作该文件。 0050 从函数调用方法角度而言,本发明实施例中所指文件“打开”主要包括以下几种情 形: 0051 1、使用Windows标准API CreateFile函数打开。

21、目标文件; 0052 2、使用Windows Native API ZwCreateFile/NtCreateFile函数打开目标文件; 0053 3、使用Windows Native API ZwOpenFile/NtOpenFile函数打开目标文件。 0054 其中,CreateFile的参数dwCreationDisposition可以控制函数行为是“创建新 文件”还是“打开已经存在的文件”。 0055 在本发明实施例中,所述打开或删除目标文件的操作可以通过调用微软操作系统 的应用程序接口(API)的文件创建例程CreateFile或文件删除例程DeleteFile执行;也 说 明 书C。

22、N 102855437 A 4/6页 7 可以通过调用自定义的应用程序接口(BAPI)的文件创建例程FSCreateFile或文件删除例 程FSDeleteFile执行;本发明对此不作限制。 0056 步骤102、若无法打开或删除目标文件,则读取返回的错误码信息,依据所述错误 码信息判断所述目标文件是否存在句柄占用的情形; 0057 例如,假设待打开或删除的目标文件名(路径)是C:test.txt,若无法打开或删 除该路径下的文件,并且操作系统内核态返回的错误码信息为:STATUS_DELETE_PENDING, 数值为0xC0000056L;和/或,操作系统用户态返回的错误码信息为:拒绝访问。

23、:ERROR_ ACCESS_DENIED,数值为5。则可以判定所述目标文件存在句柄占用的情形。更具体而言, STATUS_DELETE_PENDING(延时删除)是微软操作系统内核定义的一个状态(错误码),它 表示某文件已被打开,但同时它也被要求删除,只是目前还有进程持有文件的句柄(持有 意味着还有引用计数)。当最后一个文件持有者关闭句柄时,文件系统驱动会自动从磁盘清 除这个文件。在“最后一个文件持有者关闭句柄前”,任何进程都无法再打开这个文件。由 于内核认为文件都要被删除了,就不用再被打开了。 0058 其中,所述“操作系统内核态返回的错误码信息”和“操作系统用户态返回的错误 码信息”的概。

24、念是微软操作系统定义的两套错误码机制,其中内核态错误码可以通过函数 RtlNtStatusToDosError转换成用户态错误码,微软这么设计的原因是为了“隔离”内核的 输出,另外也为了向下兼容。 0059 步骤103、若所述目标文件存在句柄占用的情形,则遍历操作系统的句柄表,获得 目标文件对应的文件句柄File Handle,并获取所述文件句柄File Handle所属的进程; 0060 在具体实现中,所述目标文件具有对应的全路径;所述句柄表位于操作系统内核, 其中维护有所有进程打开的句柄信息,所述句柄信息中包括文件句柄File Handle的信息, 所述文件句柄File Handle的信息。

25、中包括各文件句柄File Handle对应的文件的全路径 (即文件句柄在创建时对应的磁盘路径)。因而,作为本发明实施例具体应用的一种示例, 所述遍历操作系统的句柄表,获得目标文件对应的文件句柄File Handle的步骤具体可以 为: 0061 将目标文件的全路径与各文件句柄File Handle对应的文件的全路径进行对比, 若找到一致的文件全路径,则提取该文件全路径对应的文件句柄File Handle为所述目标 文件对应的文件句柄File Handle。 0062 在实际中,Windows操作系统会在其内核维护所有进程打开的句柄信息,维护的结 构被称作“句柄表”。句柄是区分类型存储的,同时,。

26、每个句柄都归属于一个特定的进程,常 见的句柄类型包括:File(文件)、Process(进程)、Thread(线程)、Key(键值)等。本发 明实施例主要是针对文件句柄(File Handle)而言,应用本实施例,通过枚举每一个文件句 柄所对应的文件全路径,并和待删除文件的全路径进行比较,如果相等就认为找到了目标。 而此时目标句柄所属进程也得到了明确(每个句柄都归属于一个特定的进程),切换到那 个进程,以它的名义(上下文)发起目标文件解锁操作请求即可。 0063 公知的是,微软句柄表的结构是不公开的,Windows操作系统每一个大版本都 会变动句柄表的设计方案,所以如何安全、稳定的遍历句柄表是。

27、本领域技术人员需要 关注的问题,例如,在遍历时需要考虑跨平台和遍历同步等问题。作为本发明实施例一 种具体应用的优选示例,所述遍历操作系统的句柄表的操作可以通过调用操作系统应 说 明 书CN 102855437 A 5/6页 8 用程序接口API的系统信息查询例程ZwQuerySystemInformation中的句柄信息系统 SystemHandleInformation的功能执行。 0064 当然,上述方法仅仅用作示例,本领域技术人员根据实际情况采用任一种方式遍 历句柄表都是可行的,本发明对此不作限制。 0065 步骤104、切换到所述进程,发起目标文件句柄的关闭操作。 0066 在本发明的。

28、一种优选实施例中,所述切换到所述进程的操作可以通过调用操作系 统应用程序接口API的堆栈连接进程例程KeStackAttachProcess执行。切换到所述目标 文件的文件句柄File Handle所属的进程可以理解为切换到“句柄持有者”进程空间,然后 以这个进程的名义(进程上下文,context)发起目标文件解锁操作的请求。 0067 在具体实现中,进程切换前需要进一步考虑目标进程是否真的可供切换;例如,目 标进程正在被结束往往是不能切换的,所以要引入一定的同步机制(锁机制)等;因此,作 为本发明实施例在具体实现中的一种示例,还可以在判断所述文件句柄File Handle所属 的进程是否能切。

29、换,并在能切换时才执行所述切换至进程的步骤。 0068 在本发明的一种优选实施例中,所述基于进程发起目标文件句柄的关闭操作的步 骤具体可以包括以下子步骤: 0069 子步骤S11、以所述进程的名义发起文件句柄关闭操作请求; 0070 子步骤S12、依据所述请求调用Windows操作系统内核态的句柄关闭例程 ZwClose,所述ZwClose例程执行文件句柄关闭操作。 0071 在具体实现中,当所述目标文件句柄的关闭操作完成后,所述目标文件即被清除, 从而完成文件解锁及粉碎的过程。 0072 需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组 合,但是本领域技术人员应该知悉。

30、,本发明并不受所描述的动作顺序的限制,因为依据本发 明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书 中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。 0073 参考图2,示出了本发明的一种文件解锁的装置实施例的结构框图,具体可以包括 以下模块: 0074 判断模块21,用于判断目标文件是否存在句柄占用的情形;若是,则调用句柄表 遍历模块; 0075 句柄表遍历模块22,用于遍历操作系统的句柄表,获得目标文件对应的文件句柄 File Handle; 0076 进程获取模块23,用于获取所述文件句柄File Handle所属的进程; 。

31、0077 进程切换模块24,用于切换到所述进程; 0078 句柄关闭操作发起模块25,用于基于所述进程发起目标文件句柄的关闭操作。 0079 在具体实现中,所述目标文件是否存在句柄占用的情形可以依据所述错误码信息 判断,在这种情况下,所述的装置还可以包括以下模块: 0080 文件操作模块,用于尝试打开或删除目标文件; 0081 错误码读取模块,用于在无法打开或删除目标文件时,读取返回的错误码信息。 0082 针对在Windows操作系统中的具体应用而言,所述目标文件具有对应的全路径; 所述句柄表位于操作系统内核,其中维护有所有进程打开的句柄信息,所述句柄信息中包 说 明 书CN 1028554。

32、37 A 6/6页 9 括文件句柄File Handle的信息,所述文件句柄File Handle的信息中包括各文件句柄 File Handle对应的文件的全路径,所述目标文件对应的文件句柄File Handle通过所述全 路径对比获得。 0083 在具体实现中,本发明实施例还可以包括以下模块: 0084 切换判断模块,用于判断所述文件句柄File Handle所属的进程是否能切换,以 及,在能切换时调用进程切换模块。 0085 在本发明的一种优选实施例中,所述句柄关闭操作发起模块具体可以包括以下子 模块: 0086 请求发起子模块,用于以所述进程的名义发起文件句柄关闭操作请求; 0087 例。

33、程调用子模块,用于依据所述请求调用Windows操作系统内核态的句柄关闭例 程ZwClose,所述ZwClose例程执行文件句柄关闭操作。 0088 针对文件解锁和粉碎的应用而言,在所述目标文件句柄的关闭操作完成后,所述 目标文件即被清除。 0089 由于所述装置实施例基本相应于前述方法实施例,故本实施例的描述中未详尽之 处,可以参见前述实施例中的相关说明,在此就不赘述了。 0090 本发明可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务 器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶 盒、可编程的消费电子设备、网络PC、小型计算机、大型计。

34、算机、包括以上任何系统或设备的 分布式计算环境等等。 0091 本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序 模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组 件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由 通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以 位于包括存储设备在内的本地和远程计算机存储介质中。 0092 以上对本发明所提供的一种文件解锁的方法和一种文件解锁的装置进行了详细 介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明 只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本 发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应 理解为对本发明的限制。 说 明 书CN 102855437 A 1/1页 10 图1 图2 说 明 书 附 图CN 102855437 A 10 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 >


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1