一种保护目标应用程序的方法、装置及电子设备的制造方法

文档序号:10535284阅读:568来源:国知局
一种保护目标应用程序的方法、装置及电子设备的制造方法
【专利摘要】本发明的实施例公开一种保护目标应用程序的方法、装置及电子设备,涉及信息安全技术,能够降低应用程序受到攻击的概率,提升应用程序的安全性。方法包括:在预先注入的钩子函数监测到文件系统开启例程函数被调用时,利用所述钩子函数钩住所述文件系统开启例程函数;调用进程路径获取函数,获取调用所述文件系统开启例程函数的操作进程路径名;如果获取的操作进程路径名与预先设置的调试器进程路径名库中任一调试器进程路径名相同,拒绝调用所述文件系统开启例程函数。本发明适用于对应用程序进行反调试保护。
【专利说明】
一种保护目标应用程序的方法、装置及电子设备
技术领域
[0001]本发明涉及信息安全技术,尤其涉及一种保护目标应用程序的方法、装置及电子设备。
【背景技术】
[0002]随着计算机通信以及互联网技术的不断发展,电子设备的应用越来越普遍,例如,智能移动电话、个人数字助理、掌上电脑、笔记本电脑得到了越来越广泛的应用。电子设备上安装的应用程序(APP,AppliCat1n)也越来越多,应用程序提供的应用功能也越来越丰富。但随着应用程序提供的应用功能的不断增多,一些恶意应用程序通过捆绑在恶意应用程序中的病毒或木马,可以对需要攻击的目标应用程序进行调试,例如,利用调试器对目标应用程序进行反汇编,从而可以获取目标应用程序的汇编代码,这样,通过在获取的汇编代码中注入预先设置的病毒或木马代码,就可以实现对目标应用程序的控制,从而使得目标应用程序可以被恶意利用。
[0003]为了保障目标应用程序的安全,防止对目标应用程序非正常的调试,保护目标应用程序的合法权益,现有技术提出了针对目标应用程序的反调试方法,即在恶意程序调试目标应用程序,例如,安全应用程序时,被调试的目标应用程序通过检测自己是否被调试器附加进行调试操作,如果确定自身被调试,可以确定是恶意应用程序试图通过反汇编方法破解目标应用程序以获取自身代码,容易导致目标应用程序被恶意利用,因而,启动保护目标应用程序的方法,以维护目标应用程序(文件)的安全性。具体来说,在目标应用程序启动后,通过检测目标应用程序所属的进程的父进程名,如果父进程名与预先设置的调试器进程名库中任一调试器进程名相同,则使目标应用程序退出,这样,可以拦截预先设置的调试器的附加,从而达到反调试的目的。
[0004]但该保护目标应用程序的方法,是在ring3应用层实现的,因而,父进程信息容易被调试器伪造,例如,在恶意应用程序对目标应用程序进行调试时,通过将父进程名修改为与调试器进程库不同的进程名,从而使得检测到的目标应用程序所属的进程的父进程名与调试器进程名库不相同,导致现有保护目标应用程序的方法失效,目标应用程序容易受到攻击,目标应用程序的安全性不高。

【发明内容】

[0005]有鉴于此,本发明实施例提供一种保护目标应用程序的方法、装置及电子设备,能够降低目标应用程序受到攻击的概率,提升目标应用程序的安全性,以解决现有的保护目标应用程序的方法中应用程序容易受到攻击,安全性不高的问题。
[0006]第一方面,本发明实施例提供一种保护目标应用程序的方法,包括:
[0007]在预先注入的钩子函数监测到文件系统开启例程函数被调用时,利用所述钩子函数钩住所述文件系统开启例程函数;
[0008]调用进程路径获取函数,获取调用所述文件系统开启例程函数的操作进程路径名;
[0009]如果获取的操作进程路径名与预先设置的调试器进程路径名库中任一调试器进程路径名相同,拒绝调用所述文件系统开启例程函数。
[0010]结合第一方面,在第一方面的第一种实施方式中,在所述预先注入的钩子函数监测到文件系统开启例程函数被调用时之前,所述方法还包括:
[0011]调用操作系统的钩子函数窗口设置接口,设置用于监测所述文件系统开启例程函数的钩子函数,并获取所述操作系统的根权限以注入所述钩子函数。
[0012]结合第一方面,或第一方面的第一种实施方式,在第一方面的第二种实施方式中,在所述如果获取的操作进程路径名与预先设置的调试器进程路径名库中任一调试器进程路径名相同之后,拒绝调用所述文件系统开启例程函数之前,所述方法还包括:
[0013]提取所述操作进程路径名下的文件名;
[0014]如果提取的文件名为待保护文件名,执行所述拒绝调用所述文件系统开启例程函数的步骤。
[0015]结合第一方面的第二种实施方式,在第一方面的第三种实施方式中,所述待保护文件名包括:动态链接库文件名以及系统文件名。
[0016]结合第一方面的第二种实施方式,在第一方面的第四种实施方式中,所述提取所述操作进程路径名下的文件名包括:
[0017]查询所述操作进程路径名对应的1栈;
[0018]从所述1栈中提取文件对象;
[0019]依据所述文件对象的指针获取文件路径,提取所述文件路径下包含的文件名。[°02°]结合第一方面,或第一方面的第一种实施方式,在第一方面的第五种实施方式中,所述进程路径获取函数包括:PsGetCurrentProcessId内核函数以及ZwQuerylnformat1nProcess 内核函数。
[0021 ]结合第一方面,或第一方面的第一种实施方式,在第一方面的第六种实施方式中,所述方法还包括:
[0022]如果获取的操作进程路径名与预先设置的调试器进程路径名库中任一调试器进程路径名均不相同,允许调用所述文件系统开启例程函数。
[0023]第二方面,本发明实施例提供一种保护目标应用程序的装置,包括:钩子函数监测模块、路径名获取模块以及匹配处理模块,其中,
[0024]钩子函数监测模块,用于在预先注入的钩子函数监测到文件系统开启例程函数被调用时,利用所述钩子函数钩住所述文件系统开启例程函数;
[0025]路径名获取模块,用于调用进程路径获取函数,获取调用所述文件系统开启例程函数的操作进程路径名;
[0026]匹配处理模块,如果获取的操作进程路径名与预先设置的调试器进程路径名库中任一调试器进程路径名相同,拒绝调用所述文件系统开启例程函数。
[0027]结合第二方面,在第二方面的第一种实施方式中,所述装置还包括:
[0028]注入模块,用于调用操作系统的钩子函数窗口设置接口,设置用于监测所述文件系统开启例程函数的钩子函数,并获取所述操作系统的根权限以注入所述钩子函数。
[0029]结合第二方面,或第二方面的第一种实施方式,在第二方面的第二种实施方式中,所述匹配处理模块包括:匹配单元、文件名提取单元以及处理单元,其中,
[0030]匹配单元,如果获取的操作进程路径名与预先设置的调试器进程路径名库中任一调试器进程路径名相同,通知文件名提取单元;
[0031 ]文件名提取单元,用于提取所述操作进程路径名下的文件名;
[0032]处理单元,如果提取的文件名为待保护文件名,拒绝调用所述文件系统开启例程函数。
[0033]结合第二方面的第二种实施方式,在第二方面的第三种实施方式中,所述待保护文件名包括:动态链接库文件名以及系统文件名。
[0034]结合第二方面的第二种实施方式,在第二方面的第四种实施方式中,所述文件名提取单元包括:查询子单元、文件对象提取子单元以及文件名提取子单元,其中,
[0035]查询子单元,用于查询所述操作进程路径名对应的1栈;
[0036]文件对象提取子单元,用于从所述1栈中提取文件对象;
[0037]文件名提取子单元,用于依据所述文件对象的指针获取文件路径,提取所述文件路径下包含的文件名。
[0038]结合第二方面,或第二方面的第一种实施方式,在第二方面的第五种实施方式中,所述进程路径获取函数包括:PsGetCurrentProcessId内核函数以及ZwQuerylnformat1nProcess 内核函数。
[0039]结合第二方面,或第二方面的第一种实施方式,在第二方面的第六种实施方式中,所述匹配处理模块还用于:如果获取的操作进程路径名与预先设置的调试器进程路径名库中任一调试器进程路径名均不相同,允许调用所述文件系统开启例程函数。
[0040]第三方面,本发明实施例提供一种电子设备,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一所述的保护目标应用程序的方法。
[0041]本发明实施例提供的一种保护目标应用程序的方法、装置及电子设备,通过在预先注入的钩子函数监测到文件系统开启例程函数被调用时,利用所述钩子函数钩住所述文件系统开启例程函数;调用进程路径获取函数,获取调用所述文件系统开启例程函数的操作进程路径名;如果获取的操作进程路径名与预先设置的调试器进程路径名库中任一调试器进程路径名相同,拒绝调用所述文件系统开启例程函数。能够降低目标应用程序受到攻击的概率,提升目标应用程序的安全性,以解决现有的保护目标应用程序的方法中目标应用程序容易受到攻击,安全性不高的问题。
【附图说明】
[0042]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
[0043]图1为本发明的实施例一保护目标应用程序的方法流程示意图;
[0044]图2为本发明的实施例二保护目标应用程序的方法流程示意图;
[0045]图3为本发明的实施例三保护目标应用程序的装置结构示意图;
[0046]图4为本发明电子设备一个实施例的结构不意图。
【具体实施方式】
[0047]下面结合附图对本发明实施例进行详细描述。
[0048]应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
[0049]实施例一
[0050]图1为本发明的实施例一保护目标应用程序的方法流程示意图,如图1所示,本实施例的方法可以包括:
[0051]步骤101,在预先注入的钩子函数监测到文件系统开启例程函数被调用时,利用所述钩子函数钩住所述文件系统开启例程函数;
[0052]本实施例中,非目标应用程序在对一些目标应用程序进行调试时,需要开启目标应用程序的相关文件,非目标应用程序在开启每一文件时,都会由非目标应用程序请求调试器调用文件系统开启例程函数进行处理,文件系统开启例程函数将文件的相关信息读取到物理硬盘上,从而实现文件的开启。
[0053]本实施例中,通过分析非目标应用程序调试目标应用程序时,必须通过开启该目标应用程序的相关文件才能实现,因而,通过设置钩子(Hook)函数进行监测,钩住文件系统开启文件例程,并在钩子函数中对开启文件的操作进行处理,如果开启的文件为预先设置的保护文件,则拒绝该文件的开启,从而实现对特定文件对应的目标应用程序的安全防护。
[0054]本实施例中,例程函数是操作系统对外提供的功能接口或服务的集合,包括但不限于:API函数、服务函数、Delphi或C++Builder提供的标准函数、库函数等。
[0055]本实施例中,钩子函数可以采用能够实现本实施例后续步骤相应功能的任意语言进行编程得到,例如,可以采用超级文本预处理语言(PHP,Hypertext Preprocessor)、C、C++、Linux等语言进行编程得到。
[0056]本实施例中,作为一可选实施例,在所述监测到文件系统开启例程函数被调用时之前,该方法还可以包括:
[0057]调用操作系统的钩子函数窗口设置(SetWindowsHookEx)接口,设置用于监测文件系统开启例程函数的钩子函数,并获取操作系统的根权限以注入所述钩子函数。
[0058]本实施例中,作为一可选实施例,调用文件系统开启例程函数开启文件包括:
[0059]依据目标应用程序接收到的调试请求获取文件系统的设备名;
[0060]调用驱动对象获取内核函数,依据获取的文件系统的设备名,获取文件系统的驱动对象;
[0061 ]从获取的文件系统的驱动对象的结构指针中,查询到文件系统开启例程函数;
[0062]调用所述文件系统开启例程函数。
[0063]本实施例中,作为一可选实施例,文件系统的设备名为:\\FileSystemWNtfs,驱动对象获取内核函数为= ObReferenceOb jectByName内核函数,文件系统开启例程函数为:IRP_MJ_CREATE例程函数,该IRP_MJ_CREATE例程函数是关于文件开启的。
[0064]步骤102,调用进程路径获取函数,获取调用所述文件系统开启例程函数的操作进程路径名;
[0065]本实施例中,作为一可选实施例,进程路径获取函数包括:PsGetCurrentProcessId 内核函数以及 ZwQuerylnformat1nProcess 内核函数。
[0066]步骤103,如果获取的操作进程路径名与预先设置的调试器进程路径名库中任一调试器进程路径名相同,拒绝调用所述文件系统开启例程函数。
[0067]本实施例中,为了判断是否是调试器在开启文件,可以通过调用PsGetCurrentProcessId 内核函数和ZwQuerylnformat1nProcess 内核函数,获取操作进程路径名,将获取的操作进程路径名与调试器进程路径名库中的调试器进程路径名进行匹配,如果相匹配,可以确定是调试器在开启文件。作为一可选实施例,预先设置的调试器进程路径名库中的调试器进程路径名包括:\\0D、\\Ollydbg、\\VirtualBOX、\\CE或\\(:1163七61^;[116等,例如,如果获取的操作进程路径名为:\\00、\\0117此8、\\'\^1'1:皿113(?、\\CE或\\cheatengine等,可以确认获取的操作进程路径名与预先设置的调试器进程路径名库中任一调试器进程路径名相同。
[0068]本实施例中,作为一可选实施例,拒绝调用所述文件系统开启例程函数可以是向调用所述文件系统开启例程函数的装置返回拒绝信息实现,也可以是通知所述文件系统开启例程函数返回拒绝信息实现。
[0069]本实施例中,作为一可选实施例,该方法还可以包括:
[0070]如果获取的操作进程路径名与预先设置的调试器进程路径名库中任一调试器进程路径名均不相同,允许调用所述文件系统开启例程函数。
[0071]本实施例中,允许调用所述文件系统开启例程函数即通知所述文件系统开启例程函数,按照现有流程进行处理。例如,文件系统开启例程函数将文件的相关信息读取到物理硬盘上,从而实现文件的开启。
[0072]本发明保护目标应用程序的方法,在预先注入的钩子函数监测到文件系统开启例程函数被调用时,利用所述钩子函数钩住所述文件系统开启例程函数;调用进程路径获取函数,获取调用所述文件系统开启例程函数的操作进程路径名;如果获取的操作进程路径名与预先设置的调试器进程路径名库中任一调试器进程路径名相同,拒绝调用所述文件系统开启例程函数。这样,通过在ringO内核层注入钩子函数,在开启文件时,首先经由钩子函数处理,钩子函数可选择性地做处理,判断是否为调试器在开启目标应用程序的文件,是则拦截,可退出不经过文件系统,使得文件开启失败,从而达到反调试的效果,有利于维护目标应用程序不被调试器附加调试,不被反汇编,有利于维护目标应用程序的安全,降低目标应用程序受到攻击的概率,提升目标应用程序的安全性;进一步地,由于是通过ringO内核层实现的应用程序保护反调试,从技术原理上较底层不容易被调试器突破,更好地保护本实施例方法反调试的稳定性以及有效性;而且,如果不是调试器在开启文件,通知或调用文件系统开启例程函数开启文件,不影响文件开启。
[0073]实施例二
[0074]图2为本发明的实施例二保护目标应用程序的方法流程示意图,如图2所示,本实施例的方法可以包括:
[0075]步骤201,在预先注入的钩子函数监测到文件系统开启例程函数被调用时,利用所述钩子函数钩住所述文件系统开启例程函数;
[0076]步骤202,调用进程路径获取函数,获取调用所述文件系统开启例程函数的操作进程路径名;
[0077]本实施例中,步骤201至步骤202的过程分别和上述方法实施例一的步骤101至步骤102类似,此处不再赘述。
[0078]步骤203,如果获取的操作进程路径名与预先设置的调试器进程路径名库中任一调试器进程路径名相同,提取所述操作进程路径名下的文件名;
[0079]步骤204,如果提取的文件名为待保护文件名,拒绝调用所述文件系统开启例程函数。
[0080]本实施例中,作为一可选实施例,待保护文件名包括但不限于:动态链接库文件名以及系统文件名。例如,由于调试器在对目标应用程序进行反汇编调试时,需要获取目标应用程序中动态链接库文件或系统文件的反汇编代码,这样,才能在动态链接库文件或系统文件的反汇编代码注入预先设置的恶意代码段,达到控制目标应用程序的目的,对于一些非待保护文件的调试,一般不会影响目标应用程序。因而,为了更准确定位是否是调试器针对动态链接库文件或系统文件的调试,通过提取获取的操作进程路径名下的文件名,以确定调试器是否在开启对目标应用程序造成安全隐患的动态链接库文件或系统文件。
[0081]本实施例中,作为一可选实施例,所述提取所述操作进程路径名下的文件名包括:
[0082]查询所述操作进程路径名对应的1栈;
[0083]从所述1栈中提取文件对象;
[0084]依据所述文件对象的指针获取文件路径,提取所述文件路径下包含的文件名。
[0085]本实施例中,并不是调试器在开启所有文件时都需要拦截,可以只关心对目标应用程序造成安全隐患的待保护文件,例如,通过在钩子函数中设置待保护文件名,通过在1栈中提取文件对象,由文件对象指针获取文件路径,提取文件路径下包含的文件名,如果提取到的文件名与待保护文件名相匹配,拦截文件系统开启例程函数开启该文件。举例来说,如果待保护文件名之一为kisknl.sys,这样,在调试器调用文件系统开启例程函数开启kisknl.sys文件时,拦截其开启kisknl.sys文件,从而达到反调试效果。
[0086]本发明保护目标应用程序的方法,通过提取所述操作进程路径名下的文件名,将提取到的文件名与待保护文件名进行匹配,可以更准确拦截调试器对目标应用程序造成安全隐患的动态链接库文件或系统文件的调试,提升反调试效率以及精度,避免对正常开启文件的误判。
[0087]实施例三
[0088]图3为本发明的实施例三保护目标应用程序的装置结构示意图,如图3所示,本实施例的装置可以包括:钩子函数监测模块31、路径名获取模块32以及匹配处理模块33,其中,
[0089]钩子函数监测模块31,用于在预先注入的钩子函数监测到文件系统开启例程函数被调用时,利用所述钩子函数钩住所述文件系统开启例程函数;
[0090]本实施例中,例程函数是操作系统对外提供的功能接口或服务的集合,包括但不限于:API函数、服务函数、Delphi或C++Builder提供的标准函数、库函数等。
[0091]本实施例中,钩子函数可以采用能够实现本实施例后续步骤相应功能的任意语言进行编程得到。
[0092]本实施例中,作为一可选实施例,钩子函数监测模块31包括:设备名获取单元、驱动对象获取单元、查询单元、调用单元、监测单元以及钩子函数处理单元(图中未示出),其中,
[0093]设备名获取单元,用于依据应用程序发送的调试请求获取文件系统的设备名;
[0094]驱动对象获取单元,用于调用驱动对象获取内核函数,依据获取的文件系统的设备名,获取文件系统的驱动对象;
[0095]查询单元,用于从获取的文件系统的驱动对象的结构指针中,查询到文件系统开启例程函数;
[0096]调用单元,用于调用所述文件系统开启例程函数;
[0097]本实施例中,作为一可选实施例,文件系统的设备名为:\\FileSystem\\Ntfs,驱动对象获取内核函数为= ObReferenceOb jectByName内核函数,文件系统开启例程函数为:I RP_MJ_CREATE 例程函数。
[0098]监测单元,用于监测调用单元,在监测到调用单元调用所述文件系统开启例程函数时,通知钩子函数处理单元;
[0099]钩子函数处理单元,用于利用预先注入的钩子函数钩住所述文件系统开启例程函数。
[0100]路径名获取模块32,用于调用进程路径获取函数,获取调用所述文件系统开启例程函数的操作进程路径名;
[0101 ]本实施例中,作为一可选实施例,所述进程路径获取函数包括:PsGetCurrentProcessId 内核函数以及 ZwQuerylnformat1nProcess 内核函数。
[0102]匹配处理模块33,如果获取的操作进程路径名与预先设置的调试器进程路径名库中任一调试器进程路径名相同,拒绝调用所述文件系统开启例程函数。
[0103]本实施例中,作为一可选实施例,预先设置的调试器进程路径名库中的调试器进程路径名包括:\\OD、\\ollydbg、\\VirtualBox、\\CE或\\cheatengine等,例如,如果获取的操作进程路径名为:\\0D、\\ol Iydbg、\\VirtualBox、\\CE 或\\cheatengine等,可以确认获取的操作进程路径名与预先设置的调试器进程路径名库中任一调试器进程路径名相同。
[0104]本实施例中,作为一可选实施例,匹配处理模块33包括:匹配单元、文件名提取单元以及处理单元(图中未示出),其中,
[0105]匹配单元,如果获取的操作进程路径名与预先设置的调试器进程路径名库中任一调试器进程路径名相同,通知文件名提取单元;
[0106]文件名提取单元,用于提取所述操作进程路径名下的文件名;
[0107]处理单元,如果提取的文件名为待保护文件名,拒绝调用所述文件系统开启例程函数。
[0108]本实施例中,作为一可选实施例,所述待保护文件名包括:动态链接库文件名以及系统文件名。
[0109]本实施例中,作为一可选实施例,文件名提取单元包括:查询子单元、文件对象提取子单元以及文件名提取子单元,其中,
[0110]查询子单元,用于查询所述操作进程路径名对应的1栈;
[0111]文件对象提取子单元,用于从所述1栈中提取文件对象;
[0112]文件名提取子单元,用于依据所述文件对象的指针获取文件路径,提取所述文件路径下包含的文件名。
[0113]本实施例中,作为一可选实施例,匹配处理模块33还用于如果获取的操作进程路径名与预先设置的调试器进程路径名库中任一调试器进程路径名均不相同,允许调用所述文件系统开启例程函数。
[0114]本实施例中,作为一可选实施例,该装置还包括:
[0115]注入模块34,用于调用操作系统的钩子函数窗口设置接口,设置用于监测文件系统开启例程函数的钩子函数,并获取操作系统的根权限以注入所述钩子函数。
[0116]本实施例中,作为一可选实施例,钩子函数窗口设置接口为SetWindowsHookEx接
□ O
[0117]本实施例的装置,可以用于执行图1和图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
[0118]需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0119]本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
[0120]尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0121]在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,〃计算机可读介质〃可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPR0M或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDR0M)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
[0122]应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。
[0123]在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
[0124]本发明实施例还提供一种电子设备,所述电子设备包含前述任一实施例所述的装置。
[0125]图4为本发明电子设备一个实施例的结构示意图,可以实现本发明图1-3所示实施例的流程,如图4所示,上述电子设备可以包括:壳体41、处理器42、存储器43、电路板44和电源电路45,其中,电路板44安置在壳体41围成的空间内部,处理器42和存储器43设置在电路板44上;电源电路45,用于为上述电子设备的各个电路或器件供电;存储器43用于存储可执行程序代码;处理器42通过读取存储器43中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一实施例所述的保护目标应用程序的方法。
[0126]处理器42对上述步骤的具体执行过程以及处理器42通过运行可执行程序代码来进一步执行的步骤,可以参见本发明图1-3所示实施例的描述,在此不再赘述。
[0127]该电子设备以多种形式存在,包括但不限于:
[0128](I)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。
[0129](2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
[0130](3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
[0131](4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
[0132](5)其他具有数据交互功能的电子设备。
[0133]本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
[0134]为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本发明时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
[0135]通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本
[0136]发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如R0M/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
[0137]以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
【主权项】
1.一种保护目标应用程序的方法,其特征在于,包括: 在预先注入的钩子函数监测到文件系统开启例程函数被调用时,利用所述钩子函数钩住所述文件系统开启例程函数; 调用进程路径获取函数,获取调用所述文件系统开启例程函数的操作进程路径名;如果获取的操作进程路径名与预先设置的调试器进程路径名库中任一调试器进程路径名相同,拒绝调用所述文件系统开启例程函数。2.根据权利要求1所述的保护目标应用程序的方法,其特征在于,在所述预先注入的钩子函数监测到文件系统开启例程函数被调用时之前,所述方法还包括: 调用操作系统的钩子函数窗口设置接口,设置用于监测所述文件系统开启例程函数的钩子函数,并获取所述操作系统的根权限以注入所述钩子函数。3.根据权利要求1或2所述的保护目标应用程序的方法,其特征在于,在所述如果获取的操作进程路径名与预先设置的调试器进程路径名库中任一调试器进程路径名相同之后,拒绝调用所述文件系统开启例程函数之前,所述方法还包括: 提取所述操作进程路径名下的文件名; 如果提取的文件名为待保护文件名,执行所述拒绝调用所述文件系统开启例程函数的步骤。4.根据权利要求3所述的保护目标应用程序的方法,其特征在于,所述待保护文件名包括:动态链接库文件名以及系统文件名。5.根据权利要求3所述的保护目标应用程序的方法,其特征在于,所述提取所述操作进程路径名下的文件名包括: 查询所述操作进程路径名对应的1栈; 从所述1栈中提取文件对象; 依据所述文件对象的指针获取文件路径,提取所述文件路径下包含的文件名。6.根据权利要求1或2所述的保护目标应用程序的方法,其特征在于,所述进程路径获取函数包括:PsGetCurrentProcessId内核函数以及ZwQueryInform at1nProcess内核函数。7.根据权利要求1或2所述的保护目标应用程序的方法,其特征在于,所述方法还包括: 如果获取的操作进程路径名与预先设置的调试器进程路径名库中任一调试器进程路径名均不相同,允许调用所述文件系统开启例程函数。8.—种保护目标应用程序的装置,其特征在于,包括:钩子函数监测模块、路径名获取模块以及匹配处理模块,其中, 钩子函数监测模块,用于在预先注入的钩子函数监测到文件系统开启例程函数被调用时,利用所述钩子函数钩住所述文件系统开启例程函数; 路径名获取模块,用于调用进程路径获取函数,获取调用所述文件系统开启例程函数的操作进程路径名; 匹配处理模块,如果获取的操作进程路径名与预先设置的调试器进程路径名库中任一调试器进程路径名相同,拒绝调用所述文件系统开启例程函数。9.根据权利要求8所述的保护目标应用程序的装置,其特征在于,所述装置还包括:注入模块,用于调用操作系统的钩子函数窗口设置接口,设置用于监测所述文件系统开启例程函数的钩子函数,并获取所述操作系统的根权限以注入所述钩子函数。10.根据权利要求8或9所述的保护目标应用程序的装置,其特征在于,所述匹配处理模块包括:匹配单元、文件名提取单元以及处理单元,其中, 匹配单元,如果获取的操作进程路径名与预先设置的调试器进程路径名库中任一调试器进程路径名相同,通知文件名提取单元; 文件名提取单元,用于提取所述操作进程路径名下的文件名; 处理单元,如果提取的文件名为待保护文件名,拒绝调用所述文件系统开启例程函数。
【文档编号】G06F21/56GK105893846SQ201610256257
【公开日】2016年8月24日
【申请日】2016年4月22日
【发明人】李文靖
【申请人】北京金山安全软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1