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

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

发明内容
本发明所要解决的技术问题是提供ー种文件解锁、粉碎的方法,以增强和驱动级恶意程序攻防的对抗能力。本发明还提供了ー种文件解锁、粉碎的装置,用以保证上述方法在实际中的应用及实现。为了解决上述问题,本发明实施例公开了ー种文件解锁、粉碎的方法,包括判断目标文件是否被操作系统应用程序接ロ API的LockFile函数锁定;若是,则遍历操作系统的句柄表,获得目标文件对应的文件句柄File Handle,并获取所述文件句柄File Handle所属的进程;切換到所述进程,基于所述进程调用自定义的用于文件解锁、粉碎的应用程序接ロ发起目标文件的解锁操作;在所述目标文件的解锁操作完成后,退出所述目标文件的文件句柄File Handle所属的进程。优选的,所述判断目标文件是否被操作系统应用程序接ロ API的LockFile函数锁定的步骤包括对目标文件执行加锁Lock操作;若目标文件加锁Lock成功,则判定目标文件未被操作系统应用程序接ロ API的LockFile函数锁定;若目标文件加锁Lock失败,则判定目标文件被操作系统应用程序接ロ API的LockFile函数锁定。优选的,所述目标文件具有对应的全路径;所述句柄表位于操作系统内核,其中维 护有所有进程打开的句柄信息,所述句柄信息中包括文件句柄File Handle的信息,所述文件句柄File Handle的信息中包括各文件句柄File Handle对应的文件的全路径,所述遍历操作系统的句柄表,获得目标文件对应的文件句柄File Handle的步骤包括将目标文件的全路径与各文件句柄File Handle对应的文件的全路径进行对比,若找到一致的文件全路径,则提取该文件全路径对应的文件句柄File Handle为所述目标文件对应的文件句柄File Handle。优选的,所述的方法,还包括判断所述文件句柄File Handle所属的进程是否能切換,若在能切换时执行所述切换至进程的步骤。优选的,所述切换到所述进程的操作是通过调用操作系统应用程序接ロ API的堆栈连接进程例程KeStackAttachProcess执行的;所述退出目标文件的文件句柄FileHandle所属的进程的操作是通过调用操作系统应用程序接ロ API的出栈分离进程例程KeUnstackDetachProcess 执行的。优选的,所述遍历操作系统的句柄表的操作是通过调用操作系统应用程序接ロ API的系统信息查询例程ZwQuerySystemInformation中的句柄信息系统SystemHandleInformation 的功能执行的。优选的,所述调用自定义的用于文件解锁、粉碎的应用程序接ロ发起文件解锁、粉碎操作的步骤包括获取针对目标文件的解锁操作请求,所述请求中包括调用者输入參数,所述输入參数中包括所述目标文件的路径;校验所述调用者输入參数,若校验通过,则依据所述目标文件的路径在对象管理器中查找对应的文件对象解析例程;若查找到对应的文件对象解析例程,则依据所述文件对象解析例程生成1/0请求包,并发送至预置的文件系统下层设备的原始地址;其中,所述I/o请求包中包括从所述请求中提取的目标文件解锁、粉碎操作的信息;由所述文件系统下层设备依据所述信息对所述目标文件执行解锁操作。优选的,所述依据文件路径在对象管理器中查找对应的文件对象解析例程的步骤具体包括以下子步骤;子步骤SI、判断文件路径是否已经拆解完毕,若否,则执行子步骤S2 ;若是,则执行子步骤S4 ;
子步骤S2、按照路径分隔符拆解出文件路径中下一个待拆解的路径段;子步骤S3、采用当前拆解出的路径段在对象管理器中捜索,判断是否存在对应的文件对象例程;若是,则返回子步骤SI ;若否,则执行子步骤S5 ;子步骤S4、获得所述文件路径对应的文件对象解析例程。子步骤S5、返回未找到对应文件对象解析例程的信息。优选的,所述的方法,还包括删除经解锁的目标文件。
本发明实施例还公开了ー种文件解锁、粉碎的装置,包括文件锁定判断模块,用于判断目标文件是否被操作系统应用程序接ロ API的LockFile函数锁定;若是,则调用句柄表遍历模块;句柄表遍历模块,用于遍历操作系统的句柄表,获得目标文件对应的文件句柄File Handle ;进程获取模块,用于获取所述文件句柄File Handle所属的进程;进程切换模块,用于切换到所述进程;解锁操作发起模块,用于基于所述进程调用自定义的用于文件解锁、粉碎的应用程序接ロ发起目标文件的解锁操作;进程回退模块,用于在所述目标文件的解锁操作完成后,退出所述目标文件的文件句柄File Handle所属的进程。优选的,所述目标文件具有对应的全路径;所述句柄表位于操作系统内核,其中维护有所有进程打开的句柄信息,所述句柄信息中包括文件句柄File Handle的信息,所述文件句柄File Handle的信息中包括各文件句柄File Handle对应的文件的全路径,所述目标文件对应的文件句柄File Handle通过所述全路径对比获得。优选的,所述的装置,还包括切換判断模块,用于判断所述文件句柄File Handle所属的进程是否能切換,以及,在能切换时调用进程切換模块。优选的,所述解锁操作发起模块包括请求获取子模块,用于获取针对目标文件的解锁操作请求,所述请求中包括调用者输入參数,所述输入參数中包括所述目标文件的路径;參数检验子模块,用于校验所述调用者输入參数;解析例程查找子模块,用于在所述调用者输入參数校验通过时,依据所述目标文件的路径在对象管理器中查找对应的文件对象解析例程;IRP包发送子模块,用于在查找到对应的文件对象解析例程吋,依据所述文件对象解析例程生成I/o请求包,并发送至预置的文件系统下层设备的原始地址;其中,所述I/O请求包中包括从所述请求中提取的目标文件解锁、粉碎操作的信息;由所述文件系统下层设备依据所述信息对所述目标文件执行解锁操作。优选的,所述的装置,还包括文件删除模块,用于删除经解锁的目标文件。与现有技术相比,本发明具有以下优点本发明实施例在目标文件被操作系统应用程序接ロ API的LockFile函数锁定吋,通过查找到目标文件的文件句柄File Handle所属的进程,以该进程的名义发起解锁操作请求,并基于穿透的技术执行文件解锁、粉碎操作。本发明所提供的文件解锁、粉碎、粉碎机制不仅安全、可靠、成功率高,并且可以在复杂的客户端环境中识别恶意程序的文件自保护行为并加以对抗,增强了和驱动级恶意程序攻防的对抗能力。


图I是本发明的ー种文件解锁、粉碎的方法实施例的步骤流程图;图2是本发明的ー种文件解锁、粉碎的装置实施例的结构框图。
具体实施例方式为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式
对本发明作进ー步详细的说明。
本发明实施例的核心构思之ー在于,在目标文件被操作系统应用程序接ロ API的LockFile函数锁定时,通过查找到目标文件的文件句柄File Handle所属的进程,以该进程的名义发起解锁操作请求,并基于穿透的技术执行文件解锁、粉碎操作。參考图1,示出了本发明的ー种文件解锁、粉碎的方法实施例的步骤流程图,具体可以包括以下步骤步骤101、判断目标文件是否被操作系统应用程序接ロ API的LockFile函数锁定;在具体实现中,本步骤具体可以包括如下子步骤子步骤SI I、对目标文件执行加锁Lock操作;子步骤S12、若目标文件加锁Lock成功,则判定目标文件未被操作系统应用程序接ロ API的LockFile函数锁定;子步骤S13、若目标文件加锁Lock失败,则判定目标文件被操作系统应用程序接ロ API的LockFile函数锁定。例如,假设待解锁和/或待删除的文件名(路径)是C:\test. txt,如果删不掉,则通过“加锁一次”的方法判断目标文件是否已经被LockFile函数锁定。如果目标文件被加锁成功,说明该文件之前没有被任何进程LockFile函数锁定(即目标文件无需解锁),在这种情况下,会在解锁后退出判断逻辑;如果目标文件被加锁失败,说明该文件之前已经被某个进程调用LockFile函数锁定,想删除该文件,则需要采用本发明实施例对其进行強制解锁。在Windows操作系统的应用中,LockFile函数如果锁定文件成功,会返回“非零”(相対“零”而言,一般是1),LockFile函数如果锁定文件失败,会返回“零”,这ー点在MSDN文档中有描述Return Value If the function succeeds,the return value is nonzero.If the function fails,the return value is zero.如果LockFile函数锁定文件失败,通过调用Windows API的GetLastError函数可以取得出错的原因,在具体应用中,可能的错误值有
权利要求
1.一种文件解锁、粉碎的方法,其特征在于,包括 判断目标文件是否被操作系统应用程序接口 API的LockFile函数锁定; 若是,则遍历操作系统的句柄表,获得目标文件对应的文件句柄File Handle,并获取所述文件句柄File Handle所属的进程; 切换到所述进程,基于所述进程调用自定义的用于文件解锁、粉碎的应用程序接口发起目标文件的解锁操作; 在所述目标文件的解锁操作完成后,退出所述目标文件的文件句柄File Handle所属的进程。
2.如权利要求I所述的方法,其特征在于,所述判断目标文件是否被操作系统应用程序接口 API的LockFile函数锁定的步骤包括 对目标文件执行加锁Lock操作; 若目标文件加锁Lock成功,则判定目标文件未被操作系统应用程序接口 API的LockFile函数锁定; 若目标文件加锁Lock失败,则判定目标文件被操作系统应用程序接口 API的LockFile函数锁定。
3.如权利要求I或2所述的方法,其特征在于,所述目标文件具有对应的全路径;所述句柄表位于操作系统内核,其中维护有所有进程打开的句柄信息,所述句柄信息中包括文件句柄File Handle的信息,所述文件句柄File Handle的信息中包括各文件句柄FileHandle对应的文件的全路径,所述遍历操作系统的句柄表,获得目标文件对应的文件句柄FileHandle的步骤包括 将目标文件的全路径与各文件句柄File Handle对应的文件的全路径进行对比,若找到一致的文件全路径,则提取该文件全路径对应的文件句柄File Handle为所述目标文件对应的文件句柄File Handle。
4.如权利要求3所述的方法,其特征在于,还包括 判断所述文件句柄File Handle所属的进程是否能切换,若在能切换时执行所述切换至进程的步骤。
5.如权利要求4所述的方法,其特征在于,所述切换到所述进程的操作是通过调用操作系统应用程序接口 API的堆栈连接进程例程KeStackAttachProcess执行的;所述退出目标文件的文件句柄File Handle所属的进程的操作是通过调用操作系统应用程序接口 API的出栈分离进程例程KeUnstackDetachProcess执行的。
6.如权利要求5所述的方法,其特征在于,所述遍历操作系统的句柄表的操作是通过调用操作系统应用程序接口 API的系统信息查询例程ZwQuerySystemInformation中的句柄信息系统SystemHandleInformation的功能执行的。
7.如权利要求I所述的方法,其特征在于,所述调用自定义的用于文件解锁、粉碎的应用程序接口发起文件解锁、粉碎操作的步骤包括 获取针对目标文件的解锁操作请求,所述请求中包括调用者输入参数,所述输入参数中包括所述目标文件的路径; 校验所述调用者输入参数,若校验通过,则依据所述目标文件的路径在对象管理器中查找对应的文件对象解析例程;若查找到对应的文件对象解析例程,则依据所述文件对象解析例程生成I/o请求包,并发送至预置的文件系统下层设备的原始地址;其中,所述I/o请求包中包括从所述请求中提取的目标文件解锁、粉碎操作的信息; 由所述文件系统下层设备依据所述信息对所述目标文件执行解锁操作。
8.如权利要求7所述的方法,其特征在于,所述依据文件路径在对象管理器中查找对应的文件对象解析例程的步骤具体包括以下子步骤; 子步骤SI、判断文件路径是否已经拆解完毕,若否,则执行子步骤S2 ;若是,则执行子步骤S4 ; 子步骤S2、按照路径分隔符拆解出文件路径中下一个待拆解的路径段; 子步骤S3、采用当前拆解出的路径段在对象管理器中搜索,判断是否存在对应的文件对象例程;若是,则返回子步骤SI ;若否,则执行子步骤S5 ; 子步骤S4、获得所述文件路径对应的文件对象解析例程。
子步骤S5、返回未找到对应文件对象解析例程的信息。
9.如权利要求7或8所述的方法,其特征在于,还包括 删除经解锁的目标文件。
10.一种文件解锁、粉碎的装置,其特征在于,包括 文件锁定判断模块,用于判断目标文件是否被操作系统应用程序接口 API的LockFile函数锁定;若是,则调用句柄表遍历模块; 句柄表遍历模块,用于遍历操作系统的句柄表,获得目标文件对应的文件句柄FileHandle ; 进程获取模块,用于获取所述文件句柄File Handle所属的进程; 进程切换模块,用于切换到所述进程; 解锁操作发起模块,用于基于所述进程调用自定义的用于文件解锁、粉碎的应用程序接口发起目标文件的解锁操作; 进程回退模块,用于在所述目标文件的解锁操作完成后,退出所述目标文件的文件句柄File Handle所属的进程。
11.如权利要求10所述的装置,其特征在于,所述目标文件具有对应的全路径;所述句柄表位于操作系统内核,其中维护有所有进程打开的句柄信息,所述句柄信息中包括文件句柄File Handle的信息,所述文件句柄File Handle的信息中包括各文件句柄FileHandle对应的文件的全路径,所述目标文件对应的文件句柄File Handle通过所述全路径对比获得。
12.如权利要求10或11所述的装置,其特征在于,还包括 切换判断模块,用于判断所述文件句柄File Handle所属的进程是否能切换,以及,在能切换时调用进程切换模块。
13.如权利要求10所述的装置,其特征在于,所述解锁操作发起模块包括 请求获取子模块,用于获取针对目标文件的解锁操作请求,所述请求中包括调用者输入参数,所述输入参数中包括所述目标文件的路径; 参数检验子模块,用于校验所述调用者输入参数; 解析例程查找子模块,用于在所述调用者输入参数校验通过时,依据所述目标文件的路径在对象管理器中查找对应的文件对象解析例程; IRP包发送子模块,用于在查找到对应的文件对象解析例程时,依据所述文件对象解析例程生成I/O请求包,并发送至预置的文件系统下层设备的原始地址;其中,所述I/O请求包中包括从所述请求中提取的目标文件解锁、粉碎操作的信息;由所述文件系统下层设备依据所述信息对所述目标文件执行解锁操作。
14.如权利要求10所述的装置,其特征在于,还包括 文件删除模块,用于删除经解锁的目标文件。
全文摘要
本发明提供了一种文件解锁、粉碎的方法及装置,其中所述方法包括判断目标文件是否被操作系统应用程序接口API的LockFile函数锁定;若是,则遍历操作系统的句柄表,获得目标文件对应的文件句柄File Handle,并获取所述文件句柄File Handle所属的进程;切换到所述进程,基于所述进程调用自定义的用于文件解锁、粉碎的应用程序接口发起目标文件的解锁操作;在所述目标文件的解锁操作完成后,退出所述目标文件的文件句柄File Handle所属的进程。本发明所提供的文件解锁、粉碎、粉碎机制不仅安全、可靠、成功率高,并且可以在复杂的客户端环境中识别恶意程序的文件自保护行为并加以对抗,增强了和驱动级恶意程序攻防的对抗能力。
文档编号G06F21/56GK102855431SQ20111017538
公开日2013年1月2日 申请日期2011年6月27日 优先权日2011年6月27日
发明者潘剑锋, 王宇 申请人:奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1