一种基于iOS应用的安全检测方法、装置及系统转让专利

申请号 : CN201910245705.2

文献号 : CN110110521A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 汪德嘉华保健邵根波钱潇龄孟啸龙郑小敏

申请人 : 江苏通付盾信息安全技术有限公司

摘要 :

本发明公开了一种基于iOS应用的安全检测方法、装置及系统,该方法包括:获取与目标应用相对应的应用符号表,并将获取到的与预设的检测类型相对应的类型关键字与应用符号表匹配,确定第一评价结果;向目标应用发送与预设功能相对应的动态测试指令,根据目标应用针对动态测试指令返回的测试响应结果以及预先配置的与动态测试指令相对应的至少两种预期响应结果,确定第二评价结果;根据第一评价结果以及第二评价结果,判断目标应用是否安全。该方式针对目标应用的静态代码和动态运行过程两个方面进行安全性检测,得到针对静态代码的第一评价结果和针对动态运行过程的第二评价结果,综合第一评价结果和第二评价结果对目标应用进行全面的安全性判定。

权利要求 :

1.一种iOS应用的安全检测方法,包括:

获取与目标应用相对应的应用符号表,并将获取到的与预设的检测类型相对应的类型关键字与所述应用符号表进行匹配,根据匹配成功的目标关键字的数量和/或字符权重,确定与所述目标应用相对应的第一评价结果;

向所述目标应用发送与预设功能相对应的动态测试指令,根据所述目标应用针对所述动态测试指令返回的测试响应结果以及预先配置的与所述动态测试指令相对应的至少两种预期响应结果,确定与所述目标应用相对应的第二评价结果;

根据所述第一评价结果以及所述第二评价结果,判断所述目标应用是否安全。

2.根据权利要求1所述的方法,其中,当所述预设的检测类型包括多个时,所述将获取到的与预设的检测类型相对应的类型关键字与所述应用符号表进行匹配具体包括:分别针对每个检测类型设置对应的类型集合,将提取出的各个目标关键字分别存储到与该目标关键字的检测类型相对应的类型集合中;

则所述根据匹配成功的目标关键字的数量和/或字符权重,确定与该目标应用相对应的第一评价结果包括:分别针对每个类型集合,根据该类型集合中包含的目标关键字的数量和/或目标关键字的字符权重,确定与该类型集合相对应的类型评价得分;

根据各个类型集合所对应的类型评价得分以及各个类型集合所对应的类型权重,确定与所述目标应用相对应的第一评价结果。

3.根据权利要求1所述的方法,其中,所述将获取到的与预设的检测类型相对应的类型关键字与所述应用符号表进行匹配包括:针对待匹配的类型关键字,确定与该类型关键字所对应的检测类型相匹配的类型检测区域;

从所述应用符号表中提取与所述类型检测区域相对应的目标区域,将获取到的类型关键字与所述目标区域进行匹配。

4.根据权利要求1所述的方法,其中,所述获取与目标应用相对应的应用符号表包括:获取所述目标应用的应用程序文件;

针对所述应用程序文件进行反编译,得到所述与目标应用相对应的应用符号表;

其中,所述应用符号表进一步包括:静态符号表、动态符号表、和/或字符表。

5.根据权利要求1所述的方法,所述预设功能包括防逆向功能,且所述动态测试指令包括防逆向测试指令,则所述向所述目标应用发送与预设功能相对应的动态测试指令包括:向目标应用发送与预设的防逆向功能相对应的防逆向测试指令。

6.根据权利要求5所述的方法,其中,所述向目标应用发送与预设的防逆向功能相对应的防逆向测试指令包括:根据预设的逆向测试指令表中存储的各个防逆向功能以及与各个防逆向功能相对应的各个防逆向测试指令的种类和/或各个防逆向测试指令之间的优先级信息,向目标应用发送所述逆向测试指令表中存储的各个防逆向测试指令。

7.一种iOS应用的安全检测装置,包括:

第一评价结果确定模块,获取与目标应用相对应的应用符号表,并将获取到的与预设的检测类型相对应的类型关键字与所述应用符号表进行匹配,根据匹配成功的目标关键字的数量和/或字符权重,确定与所述目标应用相对应的第一评价结果;

第二评价结果确定模块,向所述目标应用发送与预设功能相对应的动态测试指令,根据所述目标应用针对所述动态测试指令返回的测试响应结果以及预先配置的与所述动态测试指令相对应的至少两种预期响应结果,确定与所述目标应用相对应的第二评价结果;

目标应用安全性判断模块,根据所述第一评价结果以及所述第二评价结果,判断所述目标应用是否安全。

8.一种iOS应用的安全检测系统,其特征在于,包括上述权利要求7所述的安全检测装置。

9.一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;

所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-6中任一项所述的一种基于iOS应用的安全检测方法对应的操作。

10.一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如权利要求1-6中任一项所述的一种基于iOS应用的安全检测方法对应的操作。

说明书 :

一种基于iOS应用的安全检测方法、装置及系统

技术领域

[0001] 本发明涉及计算机软件技术领域,具体涉及一种基于iOS应用的安全检测方法、装置及系统。

背景技术

[0002] 随着网络技术的快速发展,互联网用户的数量呈指数级增长,智能手机的销量大幅度地增加。在高端市场领域,iOS平台的移动端业务市场占有率很大。基于iOS平台的移动应用设计日益复杂,开发规模日益庞大,应用质量也越来越重要。尤其是支付类相关应用的数量在迅速增长,而支付类相关应用应用的安全性在应用的整个生命周期内都至关重要。
[0003] 但是,发明人在实现本发明的过程中发现,由于iOS平台的应用的开发技术参差不齐,进而导致应用的安全性等级参差不齐。同时,由于iOS平台的自我保护性较高,而市场上针对iOS平台的移动应用的攻击技术越来越成熟,对iPhone设备越狱的方法也逐渐简易,iOS平台的移动应用受到的威胁越来越大。因此要求对iOS应用进行多方面的安全检测,要求开发人员对iOS应用做多方面的安全保护,目前阶段针对iOS平台的应用的安全性检测市场空缺较大。
[0004] 由此可见,目前市场上没有针对iOS平台的应用的标准的安全性检测工具,对应用的安全性检测也无法实现自动化,同时iOS应用的检测较多的是静态检测,即从静态代码的角度对关键字符串进行比较,检测不全面。因此iOS平台的移动应用无法在投放市场前进行全面的安全性检测,开发人员无法提前有针对性地对移动应用的功能做出修改,带来后续使用中的各种问题,严重伤害了用户的使用体验。

发明内容

[0005] 鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种基于iOS应用的安全检测方法、装置及系统。
[0006] 依据本发明的一个方面,提供了一种iOS应用的安全检测方法,包括:
[0007] 获取与目标应用相对应的应用符号表,并将获取到的与预设的检测类型相对应的类型关键字与应用符号表进行匹配,根据匹配成功的目标关键字的数量和/或字符权重,确定与目标应用相对应的第一评价结果;
[0008] 向目标应用发送与预设功能相对应的动态测试指令,根据目标应用针对动态测试指令返回的测试响应结果以及预先配置的与动态测试指令相对应的至少两种预期响应结果,确定与目标应用相对应的第二评价结果;
[0009] 根据第一评价结果以及第二评价结果,判断目标应用是否安全。
[0010] 依据本发明的一个方面,提供了一种iOS应用的安全检测装置,包括:
[0011] 第一评价结果确定模块,获取与目标应用相对应的应用符号表,并将获取到的与预设的检测类型相对应的类型关键字与应用符号表进行匹配,根据匹配成功的目标关键字的数量和/或字符权重,确定与目标应用相对应的第一评价结果;
[0012] 第二评价结果确定模块,向目标应用发送与预设功能相对应的动态测试指令,根据目标应用针对动态测试指令返回的测试响应结果以及预先配置的与动态测试指令相对应的至少两种预期响应结果,确定与目标应用相对应的第二评价结果;
[0013] 目标应用安全性判断模块,根据第一评价结果以及第二评价结果,判断目标应用是否安全。
[0014] 依据本发明的再一方面,提供了一种iOS应用的安全检测系统,包括上述安全检测装置。
[0015] 根据本发明的再一方面,提供了一种电子设备,包括:处理器、存储器、通信接口和通信总线,处理器、存储器和通信接口通过通信总线完成相互间的通信;
[0016] 存储器用于存放至少一可执行指令,可执行指令使处理器执行上述基于多级网络节点的故障定位方法对应的操作。
[0017] 根据本发明的再一方面,提供了一种计算机存储介质,存储介质中存储有至少一可执行指令,可执行指令使处理器执行如上述基于多级网络节点的故障定位方法对应的操作。
[0018] 在本发明提供的一种iOS应用的安全检测方法、装置及系统中,获取与目标应用相对应的应用符号表,并将获取到的与预设的检测类型相对应的类型关键字与应用符号表进行匹配,根据匹配成功的目标关键字的数量和/或字符权重,确定与目标应用相对应的第一评价结果;向目标应用发送与预设功能相对应的动态测试指令,根据目标应用针对动态测试指令返回的测试响应结果以及预先配置的与动态测试指令相对应的至少两种预期响应结果,确定与目标应用相对应的第二评价结果;根据第一评价结果以及第二评价结果,判断目标应用是否安全,由此能够提升评价结果的准确性。
[0019] 上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

[0020] 通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0021] 图1示出了依据实施例一的一种iOS应用的安全检测方法的流程图;
[0022] 图2示出了依据实施例二的一种iOS应用的安全检测方法的流程图;
[0023] 图3示出了依据实施例三的一种iOS应用的安全检测装置的结构图;
[0024] 图4示出了根据本发明实施例的一种电子设备的结构示意图。

具体实施方式

[0025] 下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0026] 实施例一
[0027] 图1示出了依据实施例一的一种目标应用的安全检测方法的流程图。如图1所示,该方法包括以下步骤:
[0028] 步骤S110:获取与目标应用相对应的应用符号表,并将获取到的与预设的检测类型相对应的类型关键字与应用符号表进行匹配,根据匹配成功的目标关键字的数量和/或字符权重,确定与目标应用相对应的第一评价结果。
[0029] 本发明的执行主体可以为多种,例如,既可以是安装在目标应用所在的移动终端内部的安全软件客户端,也可以是能够与目标应用所在的移动终端进行通信的安全测试终端或安全测试服务器。其中,目标应用为待检测的应用,该应用为iOS应用。
[0030] 具体地,在本步骤中,获取目标应用的应用程序文件,对目标应用的应用程序文件进行反编译,得到反编译代码,并从反编译代码中提取各种类型的应用符号表。其中,应用符号表具体包括:静态符号表、动态符号表、和/或字符表。
[0031] 获取后台数据库中的预设的关键字数据表,遍历查询预设的关键字数据表,获取关键字数据表中存储的各个检测类型以及分别与各个检测类型相对应的类型关键字,将获取到的类型关键字与应用符号表进行匹配。其中,预设的关键字数据表具体包括:检测类型与类型关键字映射关系以及检测类型之间的优先级。例如,检测类型为防泄漏类型时,对应的类型关键字为NSLog、print、printf、write。获取关键字数据表中存储的与防泄漏类型相对应的类型关键字NSLog、print、printf、write,将类型关键字NSLog、print、printf、write与应用符号表匹配。
[0032] 若类型关键字出现在应用符号表中,则将该类型关键字提取为目标关键字,存储在后台数据库中的类型集合中。其中,分别针对每个检测类型设置对应的类型集合,将提取出的各个目标关键字分别存储到与该目标关键字的检测类型相对应的类型集合中,具体实施时,类型集合可以通过列表、文件、数据包、类型集合包等各种方式实现。例如,获取到与防泄漏检测类型相对应的类型关键字NSLog、print、printf、write,将类型关键字NSLog、print、printf、write与应用符号表匹配,发现类型关键字NSLog、print出现应用符号表中,则将类型关键字NSLog、print存储在后台数据库中的与防泄漏检测类型相对应的类型集合中。其中,当类型关键字未出现在应用符号表中时,类型集合为空,类型集合中的类型关键字个数为0。
[0033] 根据该类型集合中包含的目标关键字的数量和/或目标关键字的字符权重,确定与该类型集合相对应的类型评价得分;根据各个类型集合所对应的类型评价得分以及各个类型集合所对应的类型权重,确定目标应用的第一评价结果得分。
[0034] 将目标应用的第一评价结果分为3个等级,当目标应用的第一评价结果得分在0~3(不含3分)之间时,目标应用的第一评价结果为低;当目标应用的第一评价结果得分在3~
7(不含7分)之间时,目标应用的第一评价结果为中;当目标应用的第一评价结果得分在7~
1之间时,目标应用的第一评价结果为高。
[0035] 步骤S120:向目标应用发送与预设功能相对应的动态测试指令,根据目标应用针对动态测试指令返回的测试响应结果以及预先配置的与动态测试指令相对应的至少两种预期响应结果,确定与目标应用相对应的第二评价结果。
[0036] 其中,动态测试指令用于针对目标应用的预设功能进行配置,以实现针对预设功能的测试。具体地,动态测试指令的具体类型以及实现方式可以根据预设功能的种类不同而灵活设置。例如,动态测试指令可以为防逆向测试指令等各类指令。相应的,从后台数据库中获取预设的逆向测试指令表,根据预设的逆向测试指令表中存储的各个防逆向功能以及与各个防逆向功能相对应的各个防逆向测试指令的种类和/或各个防逆向测试指令之间的优先级,向目标应用发送逆向测试指令表中存储的各个防逆向测试指令。
[0037] 获取到各个防逆向测试指令对应的测试响应结果,并将测试响应结果存储在后台数据库中的测试响应集合中。其中,测试响应结果具体包括:目标应用所在的设备对各个防逆向测试指令对应的操作做出测试响应。测试响应集合可以通过列表、文件、数据包、测试响应集合等各种方式实现。例如,具体实施时,执行反调试防逆向测试指令对应的反调试操作,目标应用所在设备的终端命令行运行“debugserver*:12349–a应用进程号”命令,目标应用所在设备对反调试操作做出测试响应。
[0038] 与防逆向测试指令相对应的预期响应结果预先存储在后台数据库中,查询预先配置的与防逆向测试指令相对应的至少两种预期响应结果。其中,分别针对防逆向测试设置对应的预期响应结果。例如,具体实施时,当预设的防逆向功能为反调试功能时,预先配置的与防逆向测试指令相对应的至少两种预期响应结果包括:用于指示目标应用具备反调试功能的反调试类预期响应结果,以及用于指示目标应用不具备反调试功能的非反调试类预期响应结果。
[0039] 将测试响应结果与至少两种预期响应结果进行匹配,根据匹配结果确定与目标应用相对应的第二评价结果。例如,具体实施时,将测试响应结果与用于指示目标应用具备反调试功能的反调试类预期响应结果,以及用于指示目标应用不具备反调试功能的非反调试类预期响应结果匹配。若反调试防逆向测试响应结果为指示目标应用具备反调试功能的反调试类预期响应结果,则目标应用具有反调试的防逆向功能,则目标应用的第二评价结果为高;若反调试防逆向测试响应结果为指示目标应用不具备反调试功能的反调试类预期响应结果,则目标应用的第二评价结果为低。
[0040] 步骤S130:根据第一评价结果以及第二评价结果,判断目标应用的安全性等级。
[0041] 其中,第一评价结果用于从静态测试的角度反映应用的静态安全性,第二评价结果用于从动态测试的角度反映应用的动态安全性。第一评价结果以及第二评价结果的具体内涵和获取方式可由本领域技术人员灵活配置,根据第一评价结果以及第二评价结果的结合判断目标应用是否安全,能够更全面地评估应用的安全性,结果更加准确。例如,当第一评价结果和第二评价结果都为高时,目标应用的安全性等级为高;第一评价结果和第二评价结果其中之一为低时,目标应用的安全性等级为低;其余情况,目标应用的安全性等级为中。
[0042] 由此可见,本实施例通过静态测试所对应的第一评价结果以及动态测试所对应的第二评价结果,能够全面评价应用的安全性,避免单一维度的评价方式所导致的弊端,使评价结果更为准确。
[0043] 实施例二
[0044] 图2示出了依据实施例二的一种iOS应用的安全检测方法的流程图。本实施例从静态测试和动态测试两个维度实现对目标应用的全面安全性检测。目前市场上针对iOS应用的检测工具检测类型不全面,未充分考虑目标应用的防逆向功能、数据保护程度、应用运行环境安全性方面的安全测试,同时单纯从静态代码的角度对进行安全测试,得到的测试结果不精确。因此有必要从静态和动态两个维度进行反调试、反钩子、反注入、数据安全保护以及运行环境安全性各个方面的安全测试。
[0045] 如图2所示,该方法包括以下步骤:
[0046] 步骤S210:获取与目标应用相对应的应用符号表,以便将获取到的与预设的检测类型相对应的类型关键字与应用符号表进行匹配。
[0047] 具体的,在本步骤中,获取目标应用的应用程序文件,对目标应用的应用程序文件进行反编译,得到反编译代码,并从反编译代码中提取各种类型的应用符号表。其中,应用符号表具体包括:静态符号表、动态符号表、和/或字符表。获取后台数据库中的预设的关键字数据表,遍历查询预设的关键字数据表,获取关键字数据表中存储的各个检测类型以及分别与各个检测类型相对应的类型关键字,将获取到的类型关键字与应用符号表进行匹配。其中,预设的关键字数据表具体包括:检测类型与类型关键字映射关系以及检测类型之间的优先级。
[0048] 在本实施例中,以预设的检测类型为如下十种类型中的至少一种为例进行说明:
[0049] (1)第一种检测类型为防泄漏类型:
[0050] 具体地,防泄漏类型用于检测目标应用是否有防止日志泄露的功能,发明人在实现本发明的过程中发现,NSLog、print、printf、write关键字在检测目标应用是否有防止日志泄露的功能方面有针对性。NSLog、print、printf、write关键字都有打印日志的含义。NSLog、print、printf、write关键字出现次数越多,说明目标应用的日志泄露的危险性越高,目标应用的防止日志泄露的功能越差。因此将NSLog、print、printf、write关键字预设为防泄漏类型对应的类型关键字。
[0051] (2)第二种检测类型为敏感词类型:
[0052] 具体地,敏感词类型用于检测目标应用的防止关键信息泄露的功能,发明人在实现本发明的过程中发现,encrypt、decrypt、login、password、title、name关键字在检测目标应用是否有防止关键信息泄露的功能方面有针对性。encrypt、decrypt、login、password、title、name关键字代表的含义分别为加密、解密、登陆、密码、标题、名称。encrypt、decrypt、login、password、title、name关键字出现次数越多,说明目标应用的关键信息泄露的危险性越高,目标应用的防止关键信息泄露的功能越差。因此将encrypt、decrypt、login、password、title、name关键字预设为敏感词类型对应的类型关键字。
[0053] (3)第三种检测类型为代码混淆类型:
[0054] 具体地,代码混淆类型用于检测目标应用的应用程序文件是否有代码混淆的现象,发明人在实现本发明的过程中发现,didFinishLaunchingWithOptions、viewDidLoad关键字在检测目标应用的应用程序文件是否有代码混淆的现象方面有针对性。didFinishLaunchingWithOptions、viewDidLoad关键字出现次数越多,说明目标应用的应用程序文件出现代码混淆的现象的可能性越大。因此将didFinishLaunchingWithOptions、viewDidLoad关键字预设为代码混淆类型对应的类型关键字。
[0055] (4)第四种检测类型为越狱检测类型:
[0056] 具体地,越狱检测类型用于检测目标应用所在的设备是否有越狱情况,发明人在实现本发明的过程中发现,Applications/Cydia.app、/etc/ssh/sshd_config、/usr/libexec/ssh-keysign、/usr/sbin/sshd、/bin/sh、/bin/bash、/etc/apt、/Applications/Cydia.app、/Library/MobileSubstrate/MobileSubstrate.dylib关键字在检测目标应用所在的设备是否有越狱情况方面有针对性。Applications/Cydia.app、/etc/ssh/sshd_config、/usr/libexec/ssh-keysign、/usr/sbin/sshd、/bin/sh、/bin/bash、/etc/apt、/Applications/Cydia.app、/Library/MobileSubstrate/MobileSubstrate.dylib关键字出现次数越多,说明目标应用所在的设备存在越狱情况的可能性越高,因此将Applications/Cydia.app、/etc/ssh/sshd_config、/usr/libexec/ssh-keysign、/usr/sbin/sshd、/bin/sh、/bin/bash、/etc/apt、/Applications/Cydia.app、/Library/MobileSubstrate/MobileSubstrate.dylib关键字预设为越狱检测类型对应的类型关键字。
[0057] (5)第五种检测类型为代理检测类型:
[0058] 具体地,代理检测类型用于检测目标应用运行过程中是否存在网络代理的现象,发明人在实现本发明的过程中发现,kCFProxyTypeNone关键字在检测目标应用运行过程中是否存在网络代理的现象方面有针对性。出现kCFProxyTypeNone关键字说明目标应用运行过程中存在网络代理的现象的可能性越大。因此将kCFProxyTypeNone关键字预设为代理检测类型对应的类型关键字。
[0059] (6)第六种检测类型为打包保护类型:
[0060] 具体地,打包保护类型用于检测目标应用的应用程序文件是否存在代码二次打包的情况,发明人在实现本发明的过程中发现,CFBundleIdentifier、com.apple.developer.team-identifier、application-identifier关键字在检测目标应用的应用程序文件是否存在代码二次打包的情况方面有针对性。CFBundleIdentifier、com.apple.developer.team-identifier、application-identifier关键字出现次数越多,说明目标应用存在代码二次打包的情况的可能性越大。因此将CFBundleIdentifier、com.apple.developer.team-identifier、application-identifier关键字预设为打包保护类型对应的类型关键字。
[0061] (7)第七种检测类型为字符串保护类型:
[0062] 具体地,字符串保护类型用于检测目标应用是否存在字符串混淆的现象,发明人在实现本发明的过程中发现,encrypt、decrypt、login、password、title、name关键字在检测目标应用是否存在字符串混淆的现象方面有针对性。encrypt、decrypt、login、password、title、name关键字代表的含义分别为加密、解密、登陆、密码、标题、名称。encrypt、decrypt、login、password、title、name关键字出现次数越多,说明字符串被更改的可能性越大,存在字符串混淆的现象的可能性越大。因此将encrypt、decrypt、login、password、title、name关键字预设为字符串保护类型对应的类型关键字。
[0063] (8)第八种检测类型为URL匹配类型:
[0064] 具体地,URL匹配类型用于检测目标应用所在设备的网络地址保护程度,发明人在实现本发明的过程中发现,http、https关键字在检测目标应用所在设备的网络地址保护程度方面有针对性。http、https关键字出现次数越多,说明目标应用所在设备的网络地址保护程度越低。因此将http、https关键字预设为URL匹配类型对应的类型关键字。
[0065] (9)第九种检测类型为反调试类型:
[0066] 具体地,反调试类型用于检测目标应用是否具有反调试功能,发明人在实现本发明的过程中发现,ptrace关键字在检测目标应用是否有检测目标应用是否具有反调试功能方面有针对性。出现ptrace关键字,说明目标应用反调试功能越差。因此将ptrace关键字预设为反调试类型对应的类型关键字。
[0067] (10)第十种检测类型为反钩子类型:
[0068] 具体地,反钩子类型用于检测目标应用是否具有反钩子功能,发明人在实现本发明的过程中发现,libcycript.dylib、libReveal.dylib、SnoopiTweak.dylib关键字在检测目标应用是否具有反钩子功能方面有针对性。ibcycript.dylib、libReveal.dylib、SnoopiTweak.dylib关键字出现次数越多,说明目标应用反钩子功能越差。因此将,libcycript.dylib、libReveal.dylib、SnoopiTweak.dylib关键字预设为反钩子类型对应的类型关键字。
[0069] 步骤S220:将获取到的类型关键字与应用符号表进行匹配。
[0070] 具体地,在本步骤中,按照检测类型之间的优先级,遍历查询预设的关键字数据表中存储的各个检测类型以及与各个检测类型相对应的类型关键字,并将获取到的类型关键字与应用符号表进行匹配。
[0071] 检测类型具体包括10种检测类型,10种检测类型之间预先设有检测类型之间的优先级。按照预先设有的检测类型之间的优先级,10种检测类型由高到低排列为防泄漏类型、敏感词类型、代码混淆类型、越狱检测类型、代理检测类型、打包保护类型、字符串保护类型、URL匹配类型、反调试类型、和/或反钩子类型。例如,具体实施时,按照检测类型之间的优先级,遍历查询预设的关键字数据表中存储的防泄漏检测类型以及与防泄漏检测类型相对应的类型关键字NSLog、print、printf、write,并将获取的类型关键字NSLog、print、printf、write与应用符号表匹配。
[0072] 进一步地,为了实现类型关键字和应用符号表的精准比对,提高类型关键字和应用符号表的比对速度,针对待匹配的类型关键字,确定与该类型关键字所对应的检测类型相匹配的类型检测区域,并从应用符号表中提取与类型检测区域相对应的目标区域,将获取到的类型关键字与目标区域进行匹配。例如,当检测类型为敏感词检测类型时,针对获取的类型关键字encrypt、decrypt、login、password、title、name,确定与该类型关键字所对应的检测类型相匹配的类型检测区域。具体地,与敏感词检测类型相对应的类型检测区域包括:含有类名的类型检测区域和/或含有方法名的类型检测区域。根据确定的含有类名的类型检测区域和/或含有方法名的类型检测区域,从应用符号表中提取与类型检测区域相对应的目标区域,将获取到的类型关键字与目标区域进行匹配。
[0073] 步骤S230:将匹配成功的类型关键字提取为目标关键字。
[0074] 具体地,在本步骤中,将获取到的类型关键字与应用符号表进行匹配,若类型关键字出现在应用符号表中,则将该类型关键字提取为目标关键字,存储在后台数据库中的类型集合中。其中,分别针对每个检测类型设置对应的类型集合,将提取出的各个目标关键字分别存储到与该目标关键字的检测类型相对应的类型集合中,具体实施时,类型集合可以通过列表、文件、数据包、类型集合包等各种方式实现。例如,具体实施时,获取到与防泄漏检测类型相对应的类型关键字NSLog、print、printf、write,将类型关键字NSLog、print、printf、write与应用符号表匹配,发现类型关键字NSLog、print出现于应用符号表中,则将类型关键字NSLog、print存储在后台数据库中的与防泄漏检测类型相对应的类型集合中。其中,当类型关键字未出现在应用符号表中时,类型集合为空,类型集合中的类型关键字个数为0。
[0075] 进一步,为了确保重要类型的检测类型优先检测,针对多个不同类型的检测过程可以按照各个类型的优先级顺序依次执行。例如,按照检测类型的优先级,预设的关键字数据表中防泄漏检测类型的下一检测类型为敏感词检测类型。获取预设的关键字数据表中的敏感词检测类型的类型关键字,将获取到的类型关键字与应用符号表进行匹配,将匹配成功的类型关键字提取为目标关键字,并将目标关键字存储到后台与敏感词检测类型相对应的类型集合中。对代码混淆类型、越狱检测类型、代理检测类型、打包保护类型、字符串保护类型、URL匹配类型、反调试类型、反钩子类型依次执行以上操作。
[0076] 另外,为了提高检测效率,在本发明其他的实施例中,各个检测类型也可以通过多个并行执行的线程同时执行上述各种类型的检测过程,本发明对多个类型的检测过程的具体执行顺序不做限定。
[0077] 步骤S240:根据匹配成功的目标关键字的数量和/或字符权重,确定与目标应用相对应的第一评价结果。
[0078] 具体的,在本步骤中,根据该类型集合中包含的目标关键字的数量和/或目标关键字的字符权重,确定与该类型集合相对应的类型评价得分;根据各个类型集合所对应的类型评价得分以及各个类型集合所对应的类型权重,确定目标应用的第一评价结果得分。具体实施时,首先,根据该类型集合中包含的目标关键字的数量和/或目标关键字的字符权重,确定与该类型集合相对应的类型评价得分。例如,具体实施时,10个检测类型中的任一项检测类型的类型评价得分总分为10分。当检测出某一检测类型对应的任意一个关键字时,从类型评价得分中扣除1分,扣分上限为10分。以防泄漏类型举例而言,防泄漏类型对应的类型关键字为NSLog、print、printf、write,相应地,防泄漏类型所对应的类型集合中包含的目标关键字为NSLog、print,这两个目标关键字各出现一次。其中,目标关键字是指:与类型关键字匹配成功的关键字。在计算与该类型集合相对应的类型评价得分时,根据目标关键字的数量进行计算。当检测出某一检测类型对应的任意一个关键字时,从类型评价得分中扣除1分,则防泄漏类型对应的类型评价得分为8分。
[0079] 然后,当确定与各个类型集合相对应的类型评价得分之后,根据各个类型集合所对应的类型评价得分以及各个类型集合所对应的类型权重,确定目标应用的安全评价得分。例如,根据检测类型的重要性,将防泄漏类型、敏感词类型、代码混淆类型、越狱检测类型、代理检测类型、打包保护类型、字符串保护类型、URL匹配类型、反调试类型、反钩子类型10个类型集合所对应的类型权重分配为0.1、0.1、0.1、0.15、0.05、0.1、0.1、0.15、0.05、
0.1。防泄漏类型、敏感词类型、代码混淆类型、越狱检测类型、代理检测类型、打包保护类型、字符串保护类型、URL匹配类型、反调试类型、反钩子类型10个类型集合的类型评价得分分别为4、5、3、6、7、4、5、3、6、7。在计算目标应用的安全评价得分时,根据类型评价得分以及类型权重进行计算。目标应用的安全评价得分为0.1*4+0.1*5+0.1*3+0.15*6+0.05*7+0.1*
4+0.1*5+0.15*3+0.05*6+0.1*7=4.8。
[0080] 目标应用的第一评价结果得分总分为10分,目标应用的第一评价结果得分越高,说明目标应用的第一评价结果越好。将目标应用的第一评价结果分为3个等级,当目标应用的第一评价结果得分在0~3(不含3分)之间时,目标应用的第一评价结果为低;当目标应用的第一评价结果得分在3~7(不含7分)之间时,目标应用的第一评价结果为中;当目标应用的第一评价结果得分在7~1之间时,目标应用的第一评价结果为高。
[0081] 步骤S250:向目标应用发送与预设功能相对应的动态测试指令。
[0082] 其中,本实施例中的预设功能包括防逆向功能,且动态测试指令包括防逆向测试指令,相应的,向目标应用发送与预设的防逆向功能相对应的防逆向测试指令。具体实施时,获取从后台数据库中获取预设的逆向测试指令表,根据预设的逆向测试指令表中存储的各个防逆向功能以及与各个防逆向功能相对应的各个防逆向测试指令的种类和/或各个防逆向测试指令之间的优先级,向目标应用发送逆向测试指令表中存储的各个防逆向测试指令。其中,防逆向功能具体包括:反调试功能、反钩子功能、反注入功能,逆向测试指令表具体包括:防逆向功能与防逆向测试指令的映射关系以及防逆向功能之间的优先级和防逆向测试指令之间的优先级。例如,具体实施时,逆向测试指令表中存储的防逆向功能按防逆向功能优先级由高到低排序依次为反调试功能、反钩子功能、反注入功能。根据防逆向功能的优先级获取反调试防逆向功能以及与反调试防逆向功能相对应的反调试防逆向测试指令,并将反调试防逆向测试指令发送给目标应用。当然,针对逆向测试指令表中存储的防逆向功能设置优先级的操作为可选的操作,具体实施时,逆向测试指令表中存储的防逆向功能也可以不设置优先级,即:各个功能之间为对等的,相应地,反调试功能、反钩子功能、反注入功能同时并行实施。
[0083] 进一步,为了确保重要的防逆向功能相对应的防逆向测试指令优先发送,针对多个不同类型的防逆向功能相对应的防逆向测试指令发送过程可以按照各个类型的优先级顺序依次执行。例如,具体实施时,向目标应用发送与反调试防逆向功能相对应的反调试防逆向测试指令后,根据预设的防逆向功能的优先级获取反钩子防逆向功能以及与反钩子防逆向功能相对应的反钩子防逆向测试指令,并将反钩子防逆向测试指令发送给目标应用。
[0084] 另外,为了提高检测效率,在本发明其他的实施例中,各个防逆向功能检测也可以通过多个并行执行的线程同时执行上述各个防逆向功能检测过程,本发明对各个防逆向功能检测过程的具体执行顺序不做限定。
[0085] 进一步,为了实现与目标应用的通信,通过与安装目标应用的第一终端设备无线连接的第二终端设备,向目标应用发送与预设的防逆向功能相对应的防逆向测试指令;其中,第一终端设备与第二终端设备处于相同的无线网络。具体实施时,Mac电脑设备和iPhone手机设备连上同一个无线,使其处在同一网段,Mac电脑设备使用ssh自动登录iPhone手机设备,实现Mac电脑设备对iPhone手机设备的无线连接,Mac电脑设备向iPhone手机设备上的目标应用发送与预设的防逆向功能相对应的防逆向测试指令。
[0086] 步骤S260:根据目标应用针对动态测试指令返回的测试响应结果以及预先配置的与动态测试指令相对应的至少两种预期响应结果,确定与目标应用相对应的第二评价结果。
[0087] 具体地,本步骤包括如下三种实现方式中的至少一种:
[0088] 方式一:在本步骤的第一种实现方式中,直接根据目标应用针对动态测试指令返回的测试响应结果以及预先配置的与动态测试指令相对应的至少两种预期响应结果,确定与目标应用相对应的第二评价结果。
[0089] 本实现方式从目标应用的防逆向角度对目标应用进行安全检测。目前,针对应用的源代码进行调试、拦截应用运行进程、注入动态库的现象严重,对应用进行防逆向功能检测,可以评估应用防逆向功能的强弱,及早发现应用防逆向功能存在的缺陷。
[0090] 具体的,获取到各个防逆向测试指令对应的测试响应结果,并将测试响应结果存储在后台数据库中的测试响应集合中。其中,测试响应结果具体包括:目标应用所在的设备对各个防逆向测试指令对应的操作做出测试响应。测试响应集合可以通过列表、文件、数据包、测试响应集合等各种方式实现。例如,具体实施时,目标应用接收到反调试防逆向测试指令、反钩子防逆向测试指令、反注入防逆向测试指令,目标应用根据反调试防逆向测试指令、反钩子防逆向测试指令、反注入防逆向测试指令的优先级,优先执行反调试防逆向测试指令对应的反调试操作,在目标应用所在设备的终端命令行运行“debugserver*:12349–a应用进程号”命令,目标应用所在设备对反调试操作做出测试响应。按照防逆向测试指令的优先级,目标应用执行反钩子防逆向测试指令对应的反钩子操作,在目标应用所在设备的终端命令行运行“cycript–p应用进程号”命令。目标应用所在设备对反钩子操作实现测试响应。按照防逆向测试指令的优先级,目标应用执行反注入防逆向测试指令对应的反注入操作,在目标应用所在设备的终端视图下运行“optool install–c load–p“应用动态库”-t应用二进制文件”命令。目标应用所在设备对反注入操作实现测试响应。
[0091] 分别针对防逆向测试设置的预期响应结果预先存储在后台数据库中,查询预先配置的与防逆向测试指令相对应的至少两种预期响应结果。其中,当预设的防逆向功能为反调试功能时,预先配置的与防逆向测试指令相对应的至少两种预期响应结果包括:用于指示目标应用具备反调试功能的反调试类预期响应结果,以及用于指示目标应用不具备反调试功能的非反调试类预期响应结果。其中,反调试类预期响应结果中包含预设的反调试目标字段。例如,预设的反调试目标字段为Segmentation fault:11。具体实施时,执行反调试防逆向测试指令对应的反调试操作,在目标应用所在设备的终端命令行运行“debugserver*:12349–a应用进程号”命令,若返回信息中出现Segmentation fault:11,则说明目标应用具有反调试的防逆向功能;若返回信息中未出现Segmentation fault:11,则说明目标应用具有反调试的防逆向功能。
[0092] 当预设的防逆向功能为反钩子功能时,预先配置的与防逆向测试指令相对应的至少两种预期响应结果包括:用于指示目标应用具备反钩子功能的反钩子类预期响应结果,以及用于指示目标应用不具备反钩子功能的非反钩子类预期响应结果。其中,反钩子类预期响应结果中包含预设的反钩子目标字段。例如,预设的反调试目标字段为error。具体实施时,执行反钩子防逆向测试指令对应的反钩子操作,在目标应用所在设备的终端命令行运行“cycript–p应用进程号”命令,若返回信息中出现error,则说明目标应用具有反钩子的防逆向功能;若返回信息中未出现error,则说明目标应用具有反钩子的防逆向功能。
[0093] 当预设的防逆向功能为反注入功能时,预先配置的与防逆向测试指令相对应的至少两种预期响应结果包括:用于指示目标应用具备反注入功能的反注入类预期响应结果,以及用于指示目标应用不具备反注入功能的非反注入类预期响应结果。其中,反注入类预期响应结果包括:闪退类型的响应结果。例如,具体实施时,运行“optool install–c load–p“应用动态库”-t应用二进制文件”命令,再将目标应用压缩后进行安装,若出现闪退类型的响应结果,则说明目标应用具有反注入的防逆向功能;若未出现闪退类型的响应结果,则说明目标应用具有反注入的防逆向功能。
[0094] 将测试响应结果与至少两种预期响应结果进行匹配。例如,具体实施时,反调试防逆向功能测试对应的预期响应结果具体包括用于指示目标应用具备反调试功能的反调试类预期响应结果,以及用于指示目标应用不具备反调试功能的非反调试类预期响应结果。将测试响应结果与用于指示目标应用具备反调试功能的反调试类预期响应结果,以及用于指示目标应用不具备反调试功能的非反调试类预期响应结果匹配。若反调试防逆向测试响应结果为指示目标应用具备反调试功能的反调试类预期响应结果,则目标应用具有反调试的防逆向功能;若反调试防逆向测试响应结果为指示目标应用不具备反调试功能的反调试类预期响应结果,则目标应用不具有反调试的防逆向功能。
[0095] 按照三种防逆向功能测试响应结果的匹配情况判断目标应用的防逆向功能强弱。设置防逆向功能评分,根据防逆向功能评分,确定目标应用是否具有防逆向功能。其中,分别针对不同防逆向功能设置不同的防逆向功能评分,,具体实施时,若目标应用具有反调试防逆向功能,则反调试防逆向功能评分为1,若目标应用不具有反调试防逆向功能,则反调试防逆向功能评分为0。若目标应用具有反钩子防逆向功能,则反钩子防逆向功能评分为1,若目标应用不具有反钩子防逆向功能,则反钩子防逆向功能评分为0。若目标应用具有反注入防逆向功能,则反注入防逆向功能评分为1,若目标应用不具有反注入防逆向功能,则反注入防逆向功能评分为0。目标应用的第二评价结果得分为反调试防逆向功能评分、反钩子防逆向功能评分、反注入防逆向功能评分三者之和。
[0096] 根据第二评价结果得分评定第二评价结果,若第二评价结果得分为0,则目标应用的防逆向安全等级低,第二评价结果为低;若第二评价结果得分为1,则目标应用的防逆向安全等级中低,第二评价结果为中低;若第二评价结果得分为2,则目标应用的防逆向安全等级中高,第二评价结果为中高;若第二评价结果为3,则目标应用的防逆向等级高,第二评价结果为高。
[0097] 另外,为了提高检测效率,在本发明其他的实施例中,各个防逆向功能检测也可以通过多个并行执行的线程同时执行上述各个防逆向功能检测过程,本发明对各个防逆向功能检测过程的具体执行顺序不做限定。
[0098] 进一步地,为了提高防逆向功能检测的效率,将一个防逆向功能相对应的防逆向测试指令防逆向测试指令按关键字段分成多个。一个防逆向功能相对应的防逆向测试指令的数量为多个,一个防逆向功能相对应的多个防逆向测试指令之间预先设置优先级。例如,反调试防逆向功能相对应的防逆向测试指令按关键字段分成反调试防逆向测试指令1、反调试防逆向测试指令2、反调试防逆向测试指令3。按照预先设置的优先级由高到低将反调试防逆向测试指令排列为反调试防逆向测试指令1、反调试防逆向测试指令2、反调试防逆向测试指令3。具体实施时,目标应用所在设备依次执行反调试防逆向测试指令1、反调试防逆向测试指令2、反调试防逆向测试指令3对应的命令。
[0099] 通过上述的各个步骤,获取目标应用在应用运行环境中的程序启动页面,并将程序启动页面与预设的环境启动页面比较,判断目标应用在应用运行环境下是否正常启动,以此实现针对目标应用运行环境的安全检测。为了便于理解,下面以一个具体示例为例详细介绍本方式中的上述方法的具体实现方式:
[0100] 步骤一:Mac电脑设备集成ideviceinstaller(设备安装)工具,让Mac电脑设备远程连接iPhone手机设备,能够使Mac电脑设备对iPhone手机设备进行管理。
[0101] 具体的,Mac电脑设备集成ideviceinstaller工具,实现远程连接iPhone手机设备,对iPhone手机设备上的iOS应用进行管理和操作。在Mac电脑设备的终端输入“ideviceinstaller–i xxx.ipa”命令并运行,其中,“xxx.ipa”是目标应用的IPA(苹果程序应用文件)文件名。
[0102] 步骤二:被远程连接的iPhone手机设备集成frida环境,使其调用iPhone内部的应用的程序。
[0103] 具体的,在Mac电脑设备的终端输入“python xxx.py bundleId”命令并运行,其中,“xxx”是目标应用的名称。被远程连接的iPhone手机设备自动启动。
[0104] 步骤三:将启动后的应用首页和应用正常打开时的首页两者对比,若首页相同则说明应用在该运行环境下启动正常;若应用闪退或者无法加载,则应用在该运行环境下启动不正常。
[0105] 步骤四:利用ideviceinstaller工具对已经安装的应用进行卸载。
[0106] 具体的,在Mac电脑设备的终端输入“ideviceinstaller–U bundleId”命令并运行,其中,“xxx”是目标应用的名称。被远程连接的iPhone手机设备自动卸载。
[0107] 综上所述,本方式中iPhone手机设备端的目标应用可以实现自动安装、启动和卸载,无需人工手动安装、启动和卸载,摆脱了传统的安全检测方式,实现了自动安全检测,能够更加快捷地实现各种运行环境下的安全性检测,大大极高了安全检测效率,满足日益增长的iOS安全检测需求。
[0108] 方式二:在本步骤的第二种实现方式中,针对获取到的目标应用的二进制文件进行反编译,获取反编译后得到的与目标应用相对应的反向编译代码;提取反向编译代码中包含的与预设目标区域相对应的目标代码,判断目标代码中是否包含与预设的混淆标识符相匹配的内容,结合判断结果确定与目标应用相对应的第二评价结果。
[0109] 该实现方式根据目标应用的防逆向安全等级以及目标应用的数据安全等级这两类判断结果的组合确定与目标应用相对应的第二评价结果。
[0110] 本实现方式从目标应用的数据安全角度对目标应用进行安全检测。目前,针对应用的程序代码和程序字符的篡改现象严重,对目标应用进行数据保护安全检测,可以及早发现目标应用数据保护功能存在的缺陷。
[0111] 具体的,利用反编译工具,对获取到的目标应用的二进制文件进行反编译。其中,反编译工具具体包括:第一反编译工具和第二反编译工具。具体实施时,通过第一反编译工具对获取到的目标应用的二进制文件进行反编译,得到第一反向编译代码;和/或,通过第二反编译工具对获取到的目标应用的二进制文件进行反编译,得到第二反向编译代码。第一反编译工具和第二反编译工具可以同时使用,也可以选择其一使用。例如,第一反编译工具为MachOView反编译工具;第二反编译工具为Hopper Disassembler反编译工具。
[0112] 不同类型的反向编译代码预先设置了优先级,按照反向编译代码的优先级获取反向编译代码。例如,第一反向编译代码优于第二反向编译代码,其中,第一反向编译代码为MachOView反向编译代码,第二反向编译代码为Hopper Disassembler反向编译代码。具体实施时,优先获取MachOView反向编译代码。
[0113] 反向编译代码具体包括:第一反向编译代码和第二反向编译代码;第一反向编译代码中包含的与预设目标区域相对应的目标代码包括:动态库信息和/或头文件信息;第二反向编译代码中包含的与预设目标区域相对应的目标代码包括:预设函数和/或预设字符。其中,第一反向编译代码为MachOView反向编译代码,第二反向编译代码为Hopper Disassembler反向编译代码。
[0114] 具体实施时,针对第一反向编译代码设置动态库信息和/或头文件信息,从后台数据库中获取第一反向编译代码和动态库信息和/或头文件信息,将动态库信息和/或头文件信息与第一反向编译代码比对,提取反向编译代码中包含动态库信息和/或头文件信息的目标代码,并将包含动态库信息和/或头文件信息的目标代码存储在后台数据库中。例如,第一反向编译代码为MachOView反向编译代码。MachOView反编译工具解析目标应用的结构,可见目标应用二进制文件内的动态库信息和头文件信息。针对MachOView反向编译代码设置动态库信息和/或头文件信息,从后台数据库中获取MachOView反向编译代码和动态库信息和/或头文件信息,将动态库信息和/或头文件信息与MachOView反向编译代码比对,提取反向编译代码中包含动态库信息和/或头文件信息的目标代码,并将包含动态库信息和/或头文件信息的目标代码存储在后台数据库中。和/或针对第二反向编译代码设置预设函数和/或预设字符,从后台数据库中获取第二反向编译代码和预设函数和/或预设字符,将预设函数和/或预设字符与第二反向编译代码比对,提取反向编译代码中包含预设函数和/或预设字符的目标代码,并将包含预设函数和/或预设字符的目标代码存储在后台数据库中。例如,第二反向编译代码为Hopper Disassembler反向编译代码。Hopper Disassembler反编译工具可见目标应用二进制文件内的函数和字符以及方法内的逻辑代码。针对Hopper Disassembler反向编译代码设置预设函数和/或预设字符。具体实施时,从后台数据库中获取与Hopper Disassembler反编译工具相对应的反向编译代码和预设函数和/或预设字符,将预设函数和/或预设字符与反向编译代码比对,提取反向编译代码中包含预设函数和/或预设字符的目标代码,并将包含预设函数和/或预设字符的目标代码存储在后台数据库中。
[0115] 将第一反向编译代码与预设的混淆标识符匹配,判断第一反向编译代码中包含的与预设目标区域相对应的目标代码中是否包含与预设的混淆标识符相匹配的内容,得到第一判断结果;将第二反向编译代码与预设的混淆标识符匹配,判断第二反向编译代码中包含的与预设目标区域相对应的目标代码中是否包含与预设的混淆标识符相匹配的内容,得到第二判断结果。其中,第一反向编译代码为MachOView反向编译代码,第二反向编译代码为Hopper Disassembler反向编译代码。例如,具体实施时,将目标应用的二进制文件放入MachOView反编译工具中,查看Objc CFStrings字符表,将Objc CFStrings字符表对应的反编译代码与预设的混淆标识符相匹配,若Objc CFStrings字符表的反编译代码显示为标识符则表示目标应用的程序字符被混淆,若Objc CFStrings字符表的反编译代码正常显示目标应用的字符串则表示目标应用的程序字符未被混淆。和/或具体实施时,将目标应用的二进制文件放入Hopper Disassembler v4反编译工具中,随机选择一个方法函数,将方法函数对应的反编译代码与预设的混淆标识符相匹配,若方法函数的反编译代码中出现乱码则表示目标应用的程序代码已被混淆,若方法函数的反编译代码中未出现乱码则表示目标应用的程序代码未被混淆。
[0116] 根据第一判断结果和第二判断结果的重要性预先设置第一判断结果和第二判断结果的权重,根据第一判断结果和第二判断结果以及第一判断结果和第二判断结果的权重计算目标应用的数据保护安全评分。例如,具体实施时,若第一判断结果为第一反向编译代码中包含预设的混淆标识符,则将第一判断结果记为0,若第一判断结果为第一反向编译代码中不包含预设的混淆标识符,则将第一判断结果记为1;若第二判断结果为第二反向编译代码中包含预设的混淆标识符,则将第二判断结果记为0,若第二判断结果为第二反向编译代码中不包含预设的混淆标识符,则将第二判断结果记为1。具体到本例中,分别为第一判断结果和第二判断结果分配权重,第一判断结果的权重为0.5,第二判断结果的权重为0.5,第一判断结果为0,第二判断结果为1,则目标应用的数据保护安全评分为0*0.5+1*0.5=0.5。
[0117] 具体的,将目标应用的数据保护安全等级划分为四个等级,若目标应用的数据保护安全评分为0,则目标应用的数据保护安全等级为低;若目标应用的数据保护安全评分为1,则目标应用的数据保护安全等级为高;若目标应用数据保护安全评分为0~0.5(不包含0和0.5),则目标应用的数据保护安全等级为中低;若目标应用的数据保护安全评分为0.5~
1(不包含1),则目标应用的数据保护安全等级为中高。具体到本例中,目标应用的数据保护安全评分0.5,目标应用的数据保护安全等级为中高。
[0118] 可选地,在本步骤中,不同类型的反向编译代码预先设置了优先级,按照反向编译代码的优先级获取反向编译代码的目标代码。
[0119] 进一步地,为了选取包括逻辑运算符的目标代码,最大程度利用反编译工具,获取反向编译代码中包含的各个方法函数,从各个方法函数中提取包含逻辑运算符的方法函数作为目标函数,将目标函数对应的代码确定为与预设目标区域相对应的目标代码。
[0120] 综合考虑方式一中的目标应用的防逆向安全等级和方式二中的数据保护安全等级,当防逆向安全等级和数据保护安全等级都为高时,目标应用的第二评价结果为高;防逆向安全等级和数据保护安全等级其中之一为低时,目标应用的第二评价结果为低;其余情况,目标应用的第二评价结果为中。
[0121] 方式三:在本步骤的第三种实现方式中,当检测到与目标应用相对应的启动指令时,根据启动指令确定与目标应用相对应的应用运行环境;获取目标应用在应用运行环境中启动后显示的程序启动页面;查询预设的与目标应用相对应的应用运行环境相关联的环境启动页面;判断程序启动页面与环境启动页面是否匹配,结合判断结果确定与目标应用相对应的第二评价结果。
[0122] 该实现方式根据目标应用的防逆向安全等级以及目标应用的应用运行环境安全性这两类判断结果的组合确定与目标应用相对应的第二评价结果。本实现方式从目标应用的运行环境角度对目标应用进行安全检测。由于iOS应用可运行在各种不同iOS系统和不同iPhone设备上,但iOS应用的iOS系统版本和不同iPhone设备机型迭代更新很快,需要保证iOS应用在各种运行环境下均可运行正常。
[0123] 具体的,接收到目标应用发送的启动指令,启动指令中包含的环境字段中包含目标应用目前所在的运行环境,对启动指令进行解析,提取启动指令中的环境字段,根据启动指令中包含的环境字段确定与目标应用相对应的应用运行环境。例如,目标应用A在iPhone设备B的iOS系统C中启动,具体实施时,接收到启动指令,并对启动指令进行解析,解析后的启动指令中的环境字段中包含iPhone设备机型和iOS系统类别的关键字,直接读取iPhone设备机型和iOS系统类别的关键字以及关键字名录下的iPhone设备机型和iOS系统类别信息。
[0124] 具体的,接收到目标应用发送的启动指令,并对启动指令进行解析。根据解析后的启动指令的指令格式和/或指令所对应的指令规则,确定与目标应用相对应的应用运行环境。例如,解析后的启动指令的指令格式的结构包括第一部分和第二部分,第一部分表示应用运行环境中的iPhone设备机型,第二部分表示应用运行环境中的iOS系统版本。iPhone设备机型用不同的设备标识码表示,iOS系统版本用不同的版本标识码表示。对启动指令解析,从解析指令中获取第一部分和第二部分的标识码,并根据指令规则确定标识码所对应的iPhone设备机型和iOS系统版本类别。其中,指令规则具体包括:iPhone设备机型与机型标识码的映射关系,iOS系统版本与版本标识码的映射关系。
[0125] 目标应用在目前所在的运行环境中启动后,在预设时间后显示程序启动页面。具体地,在本步骤中,获取到目标应用在应用运行环境中启动后预设时间后显示的程序启动页面。
[0126] 获取目标应用在应用运行环境中启动后显示的程序启动页面,并从后台数据库中调取启动环境匹配表,从启动环境匹配表中查询与该目标应用相对应的应用运行环境的环境启动页面。其中,启动环境匹配表具体包括:目标应用、应用运行环境、环境启动页面三者的映射关系。
[0127] 获取到目标应用发送的目标应用在应用运行环境中启动后显示的程序启动页面,并从启动环境匹配表中查询到与目标应用相对应的应用运行环境相关联的环境启动页面。将程序启动页面与环境启动页面进行比对,以确定出程序启动页面与环境启动页面两者之间的差别。若程序启动页面与环境启动页面两者之间不存在差别,即二者匹配,则目标应用在运行环境中安全;若程序启动页面与环境启动页面两者之间存在差别,即二者不匹配,则目标应用在运行环境中不安全。
[0128] 进一步,为了评价目标应用在运行预设功能时的运行环境安全性,获取目标应用在应用运行环境中运行预设功能后显示的程序功能页面;查询预设的与目标应用相对应的应用运行环境相关联的环境功能页面;判断程序功能页面与环境功能页面是否匹配,根据判断结果确定目标应用在预设运行环境中是否安全。
[0129] 其中,环境功能页面具体包括:分别针对各种类型的应用运行环境,获取目标应用在该种类型的应用运行环境中运行预设功能且运行结果为成功时所对应的运行界面,将获取到的运行界面作为与该种类型的应用运行环境相关联的环境功能页面存储到预设的功能环境匹配表中,其中功能环境匹配表具体包括:目标应用、应用运行环境、预设功能、环境功能页面四者映射关系以及各个环境功能页面所对应的预设功能的优先级。
[0130] 具体地,在本步骤中,根据预设的环境匹配表中存储的各个环境功能页面所对应的预设功能的优先级,分别获取目标应用在应用运行环境中运行各种类型的预设功能后显示的程序功能页面,从功能环境匹配表中获取与目标应用、应用运行环境和预设功能相关联的环境功能页面,将程序功能页面与环境功能页面重叠,比对出程序功能页面与环境功能页面两者之间的差别。若程序功能页面与环境功能页面两者之间不存在差别,则目标应用在运行环境中预设功能运行安全,目标应用预设功能的运行环境安全等级为高;若程序功能页面与环境功能页面两者之间存在差别,则目标应用在运行环境中预设功能运行不安全,目标应用预设功能的运行环境安全等级低。
[0131] 综合考虑方式一中的目标应用的防逆向安全等级和方式三中的运行环境安全等级,当防逆向安全等级和运行环境安全等级都为高时,目标应用的第二评价结果为高;防逆向安全等级和运行环境安全等级其中之一为低时,目标应用的第二评价结果为低;其余情况,目标应用的第二评价结果为中。可选的,为了确保重要的预设功能优先进行运行环境安全性检测,预先确定目标应用在各种类型的应用运行环境中所对应的功能,预设功能的数量为多个,各个预设功能之间存在优先级。各个预设功能之间的优先级存储在功能环境匹配表中。例如,具体实施时,按功能环境匹配表中预设功能的优先级由高到低排序,各个预设功能的顺序为预设功能1、预设功能2、预设功能3。目标应用在应用运行环境中运行预设功能1,获取预设功能1的程序功能页面与环境功能页面,将取预设功能1的程序功能页面与环境功能页面进行叠加比对。依次对预设功能2和预设功能3执行上述操作。
[0132] 另外,为了提高检测效率,在本发明其他的实施例中,各个预设功能的运行环境安全性检测也可以通过多个并行执行的线程同时执行上述各个预设功能的运行环境安全性检测过程,本发明对各个预设功能的运行环境安全性检测过程的具体执行顺序不做限定。
[0133] 通过上述的各个步骤,获取目标应用在应用运行环境中的程序启动页面,并将程序启动页面与预设的环境启动页面比较,判断目标应用在应用运行环境下是否正常启动,以此实现针对目标应用运行环境的安全检测。为了便于理解,下面以一个具体示例为例详细介绍本方式中的上述方法的具体实现方式:
[0134] 步骤一:Mac电脑设备集成ideviceinstaller(设备安装)工具,让Mac电脑设备远程连接iPhone手机设备,能够使Mac电脑设备对iPhone手机设备进行管理。
[0135] 具体的,Mac电脑设备集成ideviceinstaller工具,实现远程连接iPhone手机设备,对iPhone手机设备上的iOS应用进行管理和操作。在Mac电脑设备的终端输入“ideviceinstaller–i xxx.ipa”命令并运行,其中,“xxx.ipa”是目标应用的IPA(苹果程序应用文件)文件名。
[0136] 步骤二:被远程连接的iPhone手机设备集成frida环境,使其调用iPhone内部的应用的程序。
[0137] 具体的,在Mac电脑设备的终端输入“python xxx.py bundleId”命令并运行,其中,“xxx”是目标应用的名称。被远程连接的iPhone手机设备自动启动。
[0138] 步骤三:将启动后的应用首页和应用正常打开时的首页两者对比,若首页相同则说明应用在该运行环境下启动正常;若应用闪退或者无法加载,则应用在该运行环境下启动不正常。
[0139] 步骤四:利用ideviceinstaller工具对已经安装的应用进行卸载。
[0140] 具体的,在Mac电脑设备的终端输入“ideviceinstaller–U bundleId”命令并运行,其中,“xxx”是目标应用的名称。被远程连接的iPhone手机设备自动卸载。
[0141] 综上所述,本实施例中iPhone手机设备端的目标应用可以实现自动安装、启动和卸载,无需人工手动安装、启动和卸载,摆脱了传统的安全检测方式,实现了自动安全检测,能够更加快捷地实现各种运行环境下的安全性检测,大大极高了安全检测效率,满足日益增长的iOS安全检测需求。
[0142] 具体实施时,上述三种实现方式既可以单独使用,也可以结合使用,在本实施例中,为了提升准确性,结合三种实现方式确定第二评价结果,即第二评价结果是根据目标应用的防逆向功能安全等级、目标应用的数据保护安全等级、目标应用的运行环境安全性这三个方面的判断结果的组合进行确定。
[0143] 步骤S270:根据第一评价结果第一评价结果以及第二评价结果,判断目标应用安全性等级。
[0144] 根据第一评价结果以及第二评价结果,判断目标应用安全性等级。具体的,当第一评价结果和第二评价结果都为高时,目标应用的安全性等级为高;第一评价结果和第二评价结果其中之一为低时,目标应用的安全性等级为低;其余其余情况,目标应用的安全性等级为中。其中,本实施例中的第二评价结果根据三种实现方式的判断结果结合确定。第二评价结果根据目标应用的防逆向安全等级和数据保护安全等级结合确定,当防逆向安全等级和数据保护安全等级都为高时,目标应用的第二评价结果为高;防逆向安全等级和数据保护安全等级其中之一为低时,目标应用的第二评价结果为低;其余情况,目标应用的第二评价结果为中。和/或第二评价结果根据目标应用的防逆向安全等级和运行环境安全等级结合确定,当防逆向安全等级和运行环境安全等级都为高时,目标应用的第二评价结果为高;防逆向安全等级和运行环境安全等级其中之一为低时,目标应用的第二评价结果为低;其余情况,目标应用的第二评价结果为中。
[0145] 本实施例综合利用反映目标应用的静态测试结果的第一评价结果和反映目标应用的动态测试结果的第二评价结果,全面评价应用的安全性,避免单一维度的评价方式所导致的弊端,使评价结果更为准确。其中,静态测试主要评价目标应用的应用安装文件中,利用iOS应用开发过程中在实现特定的功能时常用的类型关键字,将各个检测类型相对应的类型关键字与应用符号表模糊匹配,充分考虑了各个检测类型以及各个类型关键字的权重,对目标应用的安全性进行量化评估,对目标应用进行了全面和直观的静态检测。其中检测类型共10项,分别为:防泄漏类型、敏感词类型、代码混淆类型、越狱检测类型、代理检测类型、打包保护类型、字符串保护类型、URL匹配类型、反调试类型、和/或反钩子类型。
[0146] 动态测试从目标应用动态运行过程的防逆向安全性、数据保护安全性、运行环境安全性的角度评价目标应用的安全性。动态测试中的防逆向功能测试从反调试、反钩子、反注入三个方面综合评价目标应用的防逆向功能,将测试响应结果与至少两种预期响应结果进行匹配,根据匹配结果确定目标应用防逆向功能等级;数据保护安全性测试将目标代码与预设的混淆标识符对比,根据对比结果判定目标应用中的程序代码和程序字符是否被混淆,以此实现目标应用数据安全保护程度检测;运行环境安全性测试通过获取目标应用在应用运行环境中的程序启动页面,并将程序启动页面与预设的环境启动页面比较,判断目标应用在应用运行环境下是否正常启动,以此实现针对目标应用运行环境的安全检测。
[0147] 通过静态测试和动态测试的结合,从静态和动态两个维度对目标应用进行全面检测,充分考虑了目标应用的静态代码和动态运行过程中的防逆向、数据保护以及运行环境的安全性,能提早发现目标应用的缺陷,在目标应用投放市场前帮助开发人员有针对性对目标应用进行修改。
[0148] 实施例三
[0149] 图3示出了依据实施例三的一种iOS应用的安全检测装置的结构图,所述装置包括:
[0150] 第一评价结果确定模块31,获取与目标应用相对应的应用符号表,并将获取到的与预设的检测类型相对应的类型关键字与应用符号表进行匹配,根据匹配成功的目标关键字的数量和/或字符权重,确定与目标应用相对应的第一评价结果;
[0151] 第二评价结果确定模块32,向目标应用发送与预设功能相对应的动态测试指令,根据目标应用针对动态测试指令返回的测试响应结果以及预先配置的与动态测试指令相对应的至少两种预期响应结果,确定与目标应用相对应的第二评价结果;
[0152] 目标应用安全性判断模块33,根据第一评价结果以及第二评价结果,判断目标应用是否安全。
[0153] 可选的,当第一评价结果确定模块31适于:
[0154] 分别针对每个检测类型设置对应的类型集合,将提取出的各个目标关键字分别存储到与该目标关键字的检测类型相对应的类型集合中;
[0155] 则根据匹配成功的目标关键字的数量和/或字符权重,确定与该目标应用相对应的第一评价结果包括:
[0156] 分别针对每个类型集合,根据该类型集合中包含的目标关键字的数量和/或目标关键字的字符权重,确定与该类型集合相对应的类型评价得分;
[0157] 根据各个类型集合所对应的类型评价得分以及各个类型集合所对应的类型权重,确定与目标应用相对应的第一评价结果。
[0158] 可选的,第一评价结果确定模块31适于:
[0159] 针对待匹配的类型关键字,确定与该类型关键字所对应的检测类型相匹配的类型检测区域;
[0160] 从应用符号表中提取与类型检测区域相对应的目标区域,将获取到的类型关键字与目标区域进行匹配。
[0161] 可选的,第一评价结果确定模块31适于:
[0162] 获取目标应用的应用程序文件;
[0163] 针对应用程序文件进行反编译,得到与目标应用相对应的应用符号表;
[0164] 其中,应用符号表进一步包括:静态符号表、动态符号表、和/或字符表。
[0165] 可选的,第二评价结果确定模块32适于:
[0166] 向目标应用发送与预设的防逆向功能相对应的防逆向测试指令。
[0167] 可选的,第二评价结果确定模块32适于:
[0168] 根据预设的逆向测试指令表中存储的各个防逆向功能以及与各个防逆向功能相对应的各个防逆向测试指令的种类和/或各个防逆向测试指令之间的优先级信息,向目标应用发送逆向测试指令表中存储的各个防逆向测试指令。
[0169] 可选的,第二评价结果确定模块32适于:
[0170] 针对获取到的目标应用的二进制文件进行反编译,获取反编译后得到的与目标应用相对应的反向编译代码;
[0171] 提取反向编译代码中包含的与预设目标区域相对应的目标代码,
[0172] 判断目标代码中是否包含与预设的混淆标识符相匹配的内容,结合判断结果确定与目标应用相对应的第二评价结果。
[0173] 可选的,第二评价结果确定模块32适于:
[0174] 当检测到与目标应用相对应的启动指令时,根据启动指令确定与目标应用相对应的应用运行环境;
[0175] 获取目标应用在应用运行环境中启动后显示的程序启动页面;
[0176] 查询预设的与目标应用相对应的应用运行环境相关联的环境启动页面;
[0177] 判断程序启动页面与环境启动页面是否匹配,结合判断结果确定与目标应用相对应的第二评价结果。
[0178] 依据本发明的再一方面,提供了一种iOS应用的安全检测系统,包括上述安全检测装置。
[0179] 本申请实施例提供了一种非易失性计算机存储介质,计算机存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的一种基于iOS应用的安全检测方法。
[0180] 图4示出了根据本发明实施例的一种电子设备的结构示意图,本发明具体实施例并不对电子设备的具体实现做限定。
[0181] 如图4所示,该电子设备可以包括:处理器(processor)402、通信接口(Communications Interface)404、存储器(memory)406、以及通信总线408。
[0182] 其中:
[0183] 处理器402、通信接口404、以及存储器406通过通信总线408完成相互间的通信。
[0184] 通信接口404,用于与其它设备比如客户端或其它服务器等的网元通信。
[0185] 处理器402,用于执行程序410,具体可以执行上述基于多级网络节点的故障定位方法实施例中的相关步骤。
[0186] 具体地,程序410可以包括程序代码,该程序代码包括计算机操作指令。
[0187] 处理器402可能是中央处理器CPU,或者是特定集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。电子设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
[0188] 存储器406,用于存放程序410。存储器406可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
[0189] 程序410具体可以用于使得处理器402执行上述方法实施例中的各项操作。
[0190] 在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0191] 在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0192] 类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
[0193] 本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0194] 此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0195] 本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0196] 应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
[0197] 本发明还公开了A1.一种iOS应用的安全检测方法,包括:
[0198] 获取与目标应用相对应的应用符号表,并将获取到的与预设的检测类型相对应的类型关键字与所述应用符号表进行匹配,根据匹配成功的目标关键字的数量和/或字符权重,确定与所述目标应用相对应的第一评价结果;
[0199] 向所述目标应用发送与预设功能相对应的动态测试指令,根据所述目标应用针对所述动态测试指令返回的测试响应结果以及预先配置的与所述动态测试指令相对应的至少两种预期响应结果,确定与所述目标应用相对应的第二评价结果;
[0200] 根据所述第一评价结果以及所述第二评价结果,判断所述目标应用是否安全。
[0201] A2.根据权利要求A1所述的方法,其中,当所述预设的检测类型包括多个时,所述将获取到的与预设的检测类型相对应的类型关键字与所述应用符号表进行匹配具体包括:
[0202] 分别针对每个检测类型设置对应的类型集合,将提取出的各个目标关键字分别存储到与该目标关键字的检测类型相对应的类型集合中;
[0203] 则所述根据匹配成功的目标关键字的数量和/或字符权重,确定与该目标应用相对应的第一评价结果包括:
[0204] 分别针对每个类型集合,根据该类型集合中包含的目标关键字的数量和/或目标关键字的字符权重,确定与该类型集合相对应的类型评价得分;
[0205] 根据各个类型集合所对应的类型评价得分以及各个类型集合所对应的类型权重,确定与所述目标应用相对应的第一评价结果。
[0206] A3.根据权利要求A1所述的方法,其中,所述将获取到的与预设的检测类型相对应的类型关键字与所述应用符号表进行匹配包括:
[0207] 针对待匹配的类型关键字,确定与该类型关键字所对应的检测类型相匹配的类型检测区域;
[0208] 从所述应用符号表中提取与所述类型检测区域相对应的目标区域,将获取到的类型关键字与所述目标区域进行匹配。
[0209] A4.根据权利要求A1所述的方法,其中,所述获取与目标应用相对应的应用符号表包括:
[0210] 获取所述目标应用的应用程序文件;
[0211] 针对所述应用程序文件进行反编译,得到所述与目标应用相对应的应用符号表;
[0212] 其中,所述应用符号表进一步包括:静态符号表、动态符号表、和/或字符表。
[0213] A5.根据权利要求A1所述的方法,所述预设功能包括防逆向功能,且所述动态测试指令包括防逆向测试指令,则所述向所述目标应用发送与预设功能相对应的动态测试指令包括:
[0214] 向目标应用发送与预设的防逆向功能相对应的防逆向测试指令。
[0215] A6.根据权利要求A5所述的方法,其中,所述向目标应用发送与预设的防逆向功能相对应的防逆向测试指令包括:
[0216] 根据预设的逆向测试指令表中存储的各个防逆向功能以及与各个防逆向功能相对应的各个防逆向测试指令的种类和/或各个防逆向测试指令之间的优先级信息,向目标应用发送所述逆向测试指令表中存储的各个防逆向测试指令。
[0217] A7.根据权利要求A1所述的方法,其中,所述确定与所述目标应用相对应的第二评价结果具体包括:
[0218] 针对获取到的目标应用的二进制文件进行反编译,获取反编译后得到的与所述目标应用相对应的反向编译代码;
[0219] 提取所述反向编译代码中包含的与预设目标区域相对应的目标代码,
[0220] 判断所述目标代码中是否包含与预设的混淆标识符相匹配的内容,结合判断结果确定与所述目标应用相对应的第二评价结果。
[0221] A8.根据权利要求A1所述的方法,其中,所述确定与所述目标应用相对应的第二评价结果具体包括:
[0222] 当检测到与目标应用相对应的启动指令时,根据所述启动指令确定与所述目标应用相对应的应用运行环境;
[0223] 获取所述目标应用在所述应用运行环境中启动后显示的程序启动页面;
[0224] 查询预设的与所述目标应用相对应的应用运行环境相关联的环境启动页面;
[0225] 判断所述程序启动页面与所述环境启动页面是否匹配,结合判断结果确定与所述目标应用相对应的第二评价结果。
[0226] B9.一种iOS应用的安全检测装置,包括:
[0227] 第一评价结果确定模块,获取与目标应用相对应的应用符号表,并将获取到的与预设的检测类型相对应的类型关键字与所述应用符号表进行匹配,根据匹配成功的目标关键字的数量和/或字符权重,确定与所述目标应用相对应的第一评价结果;
[0228] 第二评价结果确定模块,向所述目标应用发送与预设功能相对应的动态测试指令,根据所述目标应用针对所述动态测试指令返回的测试响应结果以及预先配置的与所述动态测试指令相对应的至少两种预期响应结果,确定与所述目标应用相对应的第二评价结果;
[0229] 目标应用安全性判断模块,根据所述第一评价结果以及所述第二评价结果,判断所述目标应用是否安全。
[0230] B10.根据权利要求B9所述的装置,其中,当所述第一评价结果确定模块适于:
[0231] 分别针对每个检测类型设置对应的类型集合,将提取出的各个目标关键字分别存储到与该目标关键字的检测类型相对应的类型集合中;
[0232] 则所述根据匹配成功的目标关键字的数量和/或字符权重,确定与该目标应用相对应的第一评价结果包括:
[0233] 分别针对每个类型集合,根据该类型集合中包含的目标关键字的数量和/或目标关键字的字符权重,确定与该类型集合相对应的类型评价得分;
[0234] 根据各个类型集合所对应的类型评价得分以及各个类型集合所对应的类型权重,确定与所述目标应用相对应的第一评价结果。
[0235] B11.根据权利要求B9所述的装置,其中,所述第一评价结果确定模块适于:
[0236] 针对待匹配的类型关键字,确定与该类型关键字所对应的检测类型相匹配的类型检测区域;
[0237] 从所述应用符号表中提取与所述类型检测区域相对应的目标区域,将获取到的类型关键字与所述目标区域进行匹配。
[0238] B12.根据权利要求B9所述的装置,其中,所述第一评价结果确定模块适于:
[0239] 获取所述目标应用的应用程序文件;
[0240] 针对所述应用程序文件进行反编译,得到所述与目标应用相对应的应用符号表;
[0241] 其中,所述应用符号表进一步包括:静态符号表、动态符号表、和/或字符表。
[0242] B13.根据权利要求B9所述的装置,所述第二评价结果确定模块适于:
[0243] 向目标应用发送与预设的防逆向功能相对应的防逆向测试指令。
[0244] B14.根据权利要求B13所述的装置,其中,所述第二评价结果确定模块适于:
[0245] 根据预设的逆向测试指令表中存储的各个防逆向功能以及与各个防逆向功能相对应的各个防逆向测试指令的种类和/或各个防逆向测试指令之间的优先级信息,向目标应用发送所述逆向测试指令表中存储的各个防逆向测试指令。
[0246] B15.根据权利要求B9所述的装置,其中,所述第二评价结果确定模块适于:
[0247] 针对获取到的目标应用的二进制文件进行反编译,获取反编译后得到的与所述目标应用相对应的反向编译代码;
[0248] 提取所述反向编译代码中包含的与预设目标区域相对应的目标代码,
[0249] 判断所述目标代码中是否包含与预设的混淆标识符相匹配的内容,结合判断结果确定与所述目标应用相对应的第二评价结果。
[0250] B16.根据权利要求B9所述的装置,其中,所述第二评价结果确定模块适于:
[0251] 当检测到与目标应用相对应的启动指令时,根据所述启动指令确定与所述目标应用相对应的应用运行环境;
[0252] 获取所述目标应用在所述应用运行环境中启动后显示的程序启动页面;
[0253] 查询预设的与所述目标应用相对应的应用运行环境相关联的环境启动页面;
[0254] 判断所述程序启动页面与所述环境启动页面是否匹配,结合判断结果确定与所述目标应用相对应的第二评价结果。
[0255] C17.一种iOS应用的安全检测系统,其特征在于,包括上述权利要求B9-B16任一所述的安全检测装置。
[0256] D18.一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
[0257] 所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求A1-A8中任一项所述的一种基于iOS应用的安全检测方法对应的操作。
[0258] E19.一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如权利要求A1-A8中任一项所述的一种基于iOS应用的安全检测方法对应的操作。