一种外挂程序检测的方法及装置与流程

文档序号:11691000阅读:413来源:国知局
本发明涉及计算机领域,特别涉及一种外挂程序检测的方法及装置。
背景技术
::目前,在软件开发行业中,众多软件开发商对反外挂程序有着强烈的需求,多数软件开发商为了维护软件产品的平衡性和可用性,往往会对外挂程序采取多种技术手段进行封堵。通常情况下,现有的反外挂程序的技术方案存在以下两种:1)业务上的防范和检测。即是针对不同的应用程序分别制定有针对性的检测方案,如,针对一个应用程序的各种执行步骤,分别设置相应的安全级别,对于高安全级别的执行步骤配置专门的检测工具进行绑定,并进行外挂程序检测,对于低安全级别的执行步骤则可以忽略。然而,基于业务的防范和检测需要对应用程序的架构做相应的调整,存在一定的开发工作量,且针对每一应用程序都要做定制化开发并定期进行更新,这样,便大大增加了开发成本。2)基于程序样本(pattern)的检测。即是预先收集现有外挂程序的标识信息,在应用程序运行过程中,检测是否有对应的外挂程序正在运行,如果检测到则终止运行应用程序。然而,基于pattern的检测,在pattern的维护和及时更新方面存在较大的问题,需要花费大量的人力,物力来进行与外挂程序开发者进行竞争。并且新的外挂程序总是在初期一段时间无法被检测到。技术实现要素:本发明实施例提供一种外挂程序检测的方法及装置,提高外挂程序检测的准确率以及降低检测成本。本发明实施例提供的具体技术方案如下:一种外挂程序检测的方法,包括:确定目标应用程序加载的可执行文件的路径,筛选出路径不在指定路径范围内的第一类可执行文件;对目标应用程序调用的指定api逐一进行检测,筛选出被hook的api,以及确定筛选出的api所对应的第二类可执行文件;将既属于第一类可执行文件又属于第二类可执行文件的可执行文件,判定为外挂程序。较佳的,进一步包括:针对目标应用程序的类型预先设置相应的指定路径范围;针对目标应用程序的类型预先设置相应的指定api。较佳的,所述指定路径范围至少包括系统/system目录和所述目标应用程序的安装目录;所述指定的api包括位置相关api和时间相关api中的任意一种或组合。较佳的,进一步包括:按照设定周期,基于最新的外挂程序的运行特征,对所述指定路径范围进行更新,以及对所述指定api进行更新。较佳的,筛选出所述第一类可执行文件后,在进行上报之前,进一步包括:将第一类可执行文件与预设的第一白名单进行匹配,从第一类可执行文件中删除记录在第一白名单中的可执行文件;较佳的,筛选出所述第二类可执行文件后,在进行上报之前,进一步包括:将第二类可执行文件与预设的第二白名单进行匹配,从第一类可执行文件中删除记录在第二白名单中的可执行文件。较佳的,进一步包括:将第一类可执行文件和第二类可执行文件合并后作为疑似外挂程序上报至指定的服务端;根据服务端反馈的疑似外挂程序分析结果,将服务端判定为外挂程序的可执行文件,更新至本地黑名单中。较佳的,将第一类可执行文件和第二类可执行文件合并后作为疑似外挂程序上报至指定的服务端,包括:获得第一类可执行文件和第二类可执行文件的并集;针对所述并集中的每一个可执行文件进行疑似类型标注,其中,既属于第一类可执行文件又属于第二类可执行文件的可执行文件进行双重标注;将经标注的所述并集上报至指定服务端。一种外挂程序检测的装置,包括:第一处理单元,用于确定目标应用程序加载的可执行文件的路径,筛选出路径不在指定路径范围内的第一类可执行文件;第二处理单元,用于对目标应用程序调用的指定api逐一进行检测,筛选出被hook的api,以及确定筛选出的api所对应的第二类可执行文件;判定单元,用于将既属于第一类可执行文件又属于第二类可执行文件的可执行文件,判定为外挂程序。较佳的,所述第一处理单元进一步用于:针对目标应用程序的类型预先设置相应的指定路径范围;所述第二处理单元进一步用于:针对目标应用程序的类型预先设置相应的指定api。较佳的,所述指定路径范围至少包括系统/system目录和所述目标应用程序的安装目录;所述指定的api包括位置相关api和时间相关api中的任意一种或组合。较佳的,所述第一处理单元进一步用于:按照设定周期,基于最新的外挂程序的运行特征,对所述指定路径范围进行更新;所述第二处理单元进一步用于:按照设定周期,基于最新的外挂程序的运行特征,所述指定api进行更新。较佳的,筛选出所述第一类可执行文件后,在进行上报之前,所述判定单元进一步用于:将第一类可执行文件与预设的第一白名单进行匹配,从第一类可执行文件中删除记录在第一白名单中的可执行文件;筛选出所述第二类可执行文件后,在进行上报之前,所述判定单元进一步用于:将第二类可执行文件与预设的第二白名单进行匹配,从第一类可执行文件中删除记录在第二白名单中的可执行文件。较佳的,所述判定单元进一步用于:将第一类可执行文件和第二类可执行文件合并后作为疑似外挂程序上报至指定的服务端;根据服务端反馈的疑似外挂程序分析结果,将服务端判定为外挂程序的可执行文件,更新至本地黑名单中。较佳的,将第一类可执行文件和第二类可执行文件合并后作为疑似外挂程序上报至指定的服务端时,所述判定单元用于:获得第一类可执行文件和第二类可执行文件的并集;针对所述并集中的每一个可执行文件进行疑似类型标注,其中,既属于第一类可执行文件又属于第二类可执行文件的可执行文件进行双重标注;将经标注的所述并集上报至指定服务端。本发明实施例中,在目标应用程序加载的可执行文件中筛选出路径可疑的可执行文件,以及根据目标应用程序运行过程中调用的api筛选出被hook的api所对应的可执行文件,并将既属于第一类可执行文件又属于第二类可执行 文件的可执行文件,判定为外挂程序;由于所有外挂程序的工作原理是相同的,因此,本发明实施例中针对外挂程序的工作原理按照可疑路径和可疑api两个标准检测外挂程序,从源头上面封杀了外挂程序的存在空闲,有效保障了外挂程序的检测准确率;此外,采用本发明实施例,无需针对目标应用程序开发针对性的外挂程序检测程序,也无需维护复杂繁琐的程序样本,而是通过技术手段收集外挂程序的运行特征,实时更新可信的路径范围和需要保护的api即可完成对疑似外挂程序的识别,方便与外挂程序的开发商进行持续对抗,同时大大降低了研发反外挂程序所带来的样本采集分析工作量以及后期运维工作量,有效降低了成本。附图说明图1为本发明实施例中外挂程序检测流程图;图2为本发明实施例中检测装置结构示意图。具体实施方式提高外挂程序检测的准确率以及降低检测成本,本发明实施例中,设计了一种新的多挂程序的检测方式,具体的,是根据外挂程序的运行行为特点设计了专门的检测方式,由于外挂程序通常需要向应用程序中注入自行的代码以实现外挂效果,因此,只需要检测应用程序的运行行为是否出现异常便可获知是否存在外挂程序。下面结合附图对本发明优选的实施方式进行详细说明。参阅图1所示,本发明实施例中,外挂程序检测的具体方法如下:步骤100:确定目标应用程序加载的可执行文件的路径,筛选出路径不在指定范围内的第一类可执行文件。正常的应用程序在运行过程中,通常需要加载可执行文件,而应用程序能够加载的可执行文件通常为指定路径范围内的可执行文件,如,可以加载系统 目录(如/system目录)下的系统固有的可执行文件,又如,可以加载应用程序的安装目录下附属的可执行文件。当然,若除了系统目录和应用程序的安装目录,还可以自定义某一指定目录作为可信目录记录在指定路径范围内,如,可认目录x。而外挂程序通常是作为一个第三方应用安装的,为了实现一些功能,外挂程序必须要将其代码注入到目标应用程序中,从而令目标应用程序加载外挂程序提供的可执行文件。相应的,本发明实施例中,在进行外挂程序检测时,首先确定目标应用程序对应的maps文件,该maps文件中记录有目标应用程序加载的所有可执行文件的路径,因此,对maps文件进行检测,便可以检测到路径不在指定路径范围内的第一类可执行文件。当然,指定路径范围的设置与目标应用程序的类型相关,不同的目标应用程序的对应的指定路径范围可能略有不同,因此,可以针对目标应用程序的类型预先设置相应的指定路径范围,并且随着时间的推移,需要按照设定周期,基于各个外挂程序最新的运行特征,对相应的目标应用程序对应的指定路径范围进行更新,在此不再赘述。例如,经检测确定maps文件中的可执行文件a和可执行文件b的路径既不属于系统目录,也不属于目标应用程序的安装目录,因此,将可执行文件a和可执行文件b判定为第一类可执行文件。当然,实际应用中,由于考虑到部分安全软件也会向应用程序中注入代码,因此,较佳的,可以将这部分安全软件相关的可执行文件的路径加入第一白名单中,在筛选出第一类可执行文件后,将第一类可执行文件与预设的第一白名单进行匹配,从第一类可执行文件中删除记录在第一白名单中的可执行文件,这样,可以有效防止误报。步骤110:对目标应用程序调用的指定应用程序编程接口(applicationprogramminginterface,api)逐一进行检测,筛选出被篡改(hook)的api,以及确定筛选出的api所对应的第二类可执行文件。本发明实施例中,为了提高api检测的效率,较佳的,针对不同类型的目标应用程序,可以设置不同的api检测项,例如,外挂程序将代码注入进目标应用程序之后,往往需要通过hook来修改目标应用程序的行为,如,针对打车类应用程序,需要hook能够改变用户位置的位置相关api,又如,针对游戏类应用程序,需要hook能够改变时间取值的时间相关api。因此,可以针对各个目标应用程序的类型预先设置相应的指定api,并且随着时间的推移,需要按照设定周期,基于各个外挂程序最新的运行特征,对相应的目标应用程序对应的指定api进行更新,在此不再赘述。另一方面,本发明实施例中,在判断某一api是否被hook时,可以采用但不限于以下方式:以android系统为例,hook方式主要有以下三种:javahook:其可行的检测方式之一为:检测某一javaapi在虚拟机中的数据结构中的accessflags成员是否包含了acc_native这个标记,确定包含时,则判定此javaapi被hook。gothook:其可行的检测方式之一为:检测api在gottable中对应的地址,是否指向真正的目标函数,如果指向的不是真正的目标函数,则说明此api被hook。inlinehook:其可行的检测方式之一为:将api在内存中的代码与在文件中的对应代码进行比较,如果两者不一致,则说明代码被篡改,则相应的api很有可能被hook。进一步地,在检测到被hook的api后,会根据hook的类型,查找出此类api对应的可执行文件,根据以上三种常见的hook:javahook、gothook和inlinehook,在查找对应的可执行文件时,可以采用但不限于以下方式:javahook:通过hook的指针(即java方法在虚拟机内的数据结构中的nativefunc指针),在maps文件夹里面查找到被hook的api所对应的可执行文件的路径,从而确定相应的可执行文件;gothook:通过hook的指针(即gottable中的指针),在maps文件夹里面查找到被hook的api所对应的可执行文件的路径;inlinehook:通过反汇编inlinehook的代码,确定inlinehook的执行路径,然后,再在通过maps文件夹里查找到对应上述执行路径的可执行文件。当然,实际应用中,由于考虑到部分被hook的api可能是安全软件所调用的api,因此,较佳的,可以预先将可信的api所对应的可执行文件的路径记录在第二白名单中,在筛选出第二类可执行文件后,将第二类可执行文件与预设的第二白名单进行匹配,从第二类可执行文件中删除记录在第二白名单中的可执行文件,这样,可以有效防止误报。步骤120:将既属于第一类可执行文件又属于第二类可执行文件的可执行文件,判定为外挂程序。基本上,既符合“路径可疑”又符合“api可疑”的可执行文件几乎可以判定是外挂程序,因此,可以在筛选出此类可执行文件后,可以直接判定为外挂程序。由于路径可疑或/和api可疑是所有外挂程序共同的基本行为特征,因此,本发明实施例从源头掌握了外挂程序的运行特点,将路径可疑和api可疑的可执行文件,直接判定为外挂程序,避免了其他因素的干扰,有效保障了外挂程序的检测准确率。进一步地,在执行步骤120之后,还可以将第一类可执行文件和第二类可执行文件合并后作为疑似外挂程序上报至指定的服务端;并根据服务端反馈的疑似外挂程序分析结果,将服务端判定为外挂程序的可执行文件,更新至本地黑名单中。其中,将第一类可执行文件和第二类可执行文件合并后作为疑似外挂程序上报至指定的服务端时,具体包括:首先,获得第一类可执行文件和第二类可执行文件的并集。例如,假设第一类可执行文件中包含可执行文件a、可执行文件b;第二类可执行文件中包含可执行文件c、可执行文件d,则获得的并集为:可执行文件a、可执行文件b、可执行文件c和可执行文件d。又例如,假设第一类可执行文件中包含可执行文件a、可执行文件b;第二类可执行文件中包含可执行文件b、可执行文件c,则获得的并集为:可执行文件a、可执行文件b和可执行文件c。其次,针对上述并集中的每一个可执行文件进行疑似类型标注,其中,既属于第一类可执行文件又属于第二类可执行文件的可执行文件进行双重标注。例如,假设第一类可执行文件中包含可执行文件a、可执行文件b;第二类可执行文件中包含可执行文件b、可执行文件c,且获得的并集为:可执行文件a、可执行文件b和可执行文件c,则可以对应可执行文件a标注“可疑路径”、对应可执行文件b标注“可疑路径&可疑api”,对应可执行文件c标注“可疑api”。最后,将经标注后的并集上报至指定服务端,如,云端的管理服务器。服务端反馈的疑似外挂程序分析结果中,既符合“路径可疑”又符合“api可疑”的可执行文件基本上也会被判定为外挂程序,因此,服务端的分析结果与第一种操作中的判定结果不会产生矛盾。进一步的,仅符合“路径可疑”,以及仅符合“api可疑”的可执行文件则需要向管理人员发送提示信息,由管理人员根据经验进行分析,以确定是否为外挂程序,再根据管理人员输入的指令确定哪些是最终确定的外挂程序。上述第一种操作和第二种操作可以结合使用,第一种操作是为了节省判定效率,第二种操作是为了完善第一种操作的判定结果。而反馈到服务器上面的疑似外挂程序经分析后,确定为外挂的可执行文件被加入到黑名单中,然后更新到客户端的黑名单中。基于上述实施例,下面通过一个具体的应用场景对上述实施例作出进一步详细说明。例如,假设目标应用程序是名为“我的花园”的养成类游戏软件,则此类游戏软件的外挂程序主要是能够修改时间的程序,因此,其外挂程序检测过程如下;首先,对“我的花园”的maps文件夹中加载的各个可执行文件的路径进行检测,假设筛选出可执行文件1、可执行文件2和可执行文件3,这三个可执行文件的路径均不在系统目录和“我的花园”的安装目录下,进一步地,经第一白名单筛选,发现可执行文件1是杀毒软件所注入的,因此,删除可执行文件1,保留可执行文件2和可执行文件3作为第一类可执行文件;其次,针对“我的花园”这一游戏软件,主要检测时间相关api是否被hook,经检测,其调用的时间相关api已被不明程序进行javahook,且javahook的指针在maps文件夹中指向可执行文件3,则将可执行文件3作为第二类可执行文件。最后,将可执行文件2标注为“路径可疑”,将可执行文件3标为“路径可疑&api可疑”,并上报至云端的服务器。进一步地,可以在本地直接将可执行文件3判定为外挂程序记录至黑名单,以及等待服务器反馈判定结果后,根据判定结果确定可执行文件2也被判定为外挂程序,则也记录至黑名单,至此,游戏软件“我的花园”的外挂程序检测工作结束。基于上述实施例,参阅图2所示,本发明实施例中,用于检测外挂程序的装置(简称,检测装置)至少包括:第一处理单元20,用于确定目标应用程序加载的可执行文件的路径,筛选出路径不在指定路径范围内的第一类可执行文件;第二处理单元21,用于对目标应用程序调用的指定api逐一进行检测,筛选出被hook的api,以及确定筛选出的api所对应的第二类可执行文件;判定单元22,用于将既属于第一类可执行文件又属于第二类可执行文件的可执行文件,判定为外挂程序。较佳的,第一处理单元20进一步用于:针对目标应用程序的类型预先设置相应的指定路径范围;第二处理单元21进一步用于:针对目标应用程序的类型预先设置相应的指定api。较佳的,指定路径范围至少包括系统/system目录和目标应用程序的安装目录;指定的api包括位置相关api和时间相关api中的任意一种或组合。较佳的,第一处理单元20进一步用于:按照设定周期,基于最新的外挂程序的运行特征,对指定路径范围进行更新;第二处理单元21进一步用于:按照设定周期,基于最新的外挂程序的运行特征,指定api进行更新。较佳的,筛选出第一类可执行文件后,在进行上报之前,判定单元22进一步用于:将第一类可执行文件与预设的第一白名单进行匹配,从第一类可执行文件中删除记录在第一白名单中的可执行文件;筛选出第二类可执行文件后,在进行上报之前,判定单元22进一步用于:将第二类可执行文件与预设的第二白名单进行匹配,从第一类可执行文件中删除记录在第二白名单中的可执行文件。较佳的,判定单元22进一步用于:将第一类可执行文件和第二类可执行文件合并后作为疑似外挂程序上报至指定的服务端;根据服务端反馈的疑似外挂程序分析结果,将服务端判定为外挂程序的可执行文件,更新至本地黑名单中。较佳的,将第一类可执行文件和第二类可执行文件合并后作为疑似外挂程序上报至指定的服务端时,判定单元22用于:获得第一类可执行文件和第二类可执行文件的并集;针对所述并集中的每一个可执行文件进行疑似类型标注,其中,既属于第一类可执行文件又属于第二类可执行文件的可执行文件进行双重标注;将经标注的所述并集上报至指定服务端。本发明实施例中,在目标应用程序加载的可执行文件中筛选出路径可疑的可执行文件,以及根据目标应用程序运行过程中调用的api筛选出被hook的api所对应的可执行文件,并将既属于第一类可执行文件又属于第二类可执行文件的可执行文件,判定为外挂程序;由于所有外挂程序的工作原理是相同的,因此,本发明实施例中针对外挂程序的工作原理按照可疑路径和可疑api两个标准检测外挂程序,从源头上面封杀了外挂程序的存在空闲,有效保障了外挂程序的检测准确率;此外,采用本发明实施例,无需针对目标应用程序开发针对性的外挂程序检测程序,也无需维护复杂繁琐的程序样本,而是通过技术手段收集外挂程序的运行特征,实时更新可信的路径范围和需要保护的api即可完成对疑似外挂程序的识别,方便与外挂程序的开发商进行持续对抗,同时大大降低了研发反外挂程序所带来的样本采集分析工作量以及后期运维工作量,有效降低了成本。同时,经分析判定为外挂程序的可执行文件会被更新至黑名单中,以便在后续工作中进行参考,在此不再赘述。本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/ 或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1