著录项信息
专利名称 | 一种应用程序安装包的检测方法、相关装置及系统 |
申请号 | CN201610617675.X | 申请日期 | 2016-07-29 |
法律状态 | 授权 | 申报国家 | 暂无 |
公开/公告日 | 2017-01-04 | 公开/公告号 | CN106294133A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F11/36 | IPC分类号 | G;0;6;F;1;1;/;3;6;;;G;0;6;F;2;1;/;5;7查看分类表>
|
申请人 | 腾讯科技(深圳)有限公司 | 申请人地址 | 广东省深圳市福田区振兴路赛格科技园2栋东403室
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 腾讯科技(深圳)有限公司 | 当前权利人 | 腾讯科技(深圳)有限公司 |
发明人 | 严明;夏春兰 |
代理机构 | 深圳市深佳知识产权代理事务所(普通合伙) | 代理人 | 王仲凯 |
摘要
本发明实施例公开了一种应用程序安装包的检测方法,包括:接收客户端发送的待检测的应用程序安装包的目标函数列表,目标函数列表中携带应用程序安装包逻辑地址;根据目标函数列表中携带的逻辑地址,判断是否存在地址偏移量,若是,则根据地址偏移量确定应用程序安装包的变更内容;若变更内容记录在应用程序安装包的预设检测内容中,则根据应用程序安装包的变更内容以及应用程序安装包的预设检测内容,获取应用程序安装包的检测结果。本发明还提供一种服务器、客户端以及应用程序安装包的检测系统。本发明供测试人员对存在的变更内容有针对性的测试,无需反复全功能跑测,提升了变更内容的覆盖率,也减少了人力成本,从而提升了检测效率。
1.一种应用程序安装包的检测方法,其特征在于,包括:
接收客户端发送的待检测的应用程序安装包的目标函数列表,所述目标函数列表中携带所述应用程序安装包逻辑地址;
根据所述目标函数列表中携带的所述逻辑地址,判断是否存在地址偏移量,若是,则根据所述地址偏移量确定所述应用程序安装包的变更内容;
若所述变更内容记录在应用程序安装包的预设检测内容中,则根据所述应用程序安装包的变更内容以及所述应用程序安装包的预设检测内容,获取所述应用程序安装包的检测结果;
所述根据所述应用程序安装包的变更内容以及所述应用程序安装包的预设检测内容,获取所述应用程序安装包的检测结果,包括:
根据所述应用程序安装包的变更内容以及所述应用程序安装包的预设检测内容,建立应用程序安装包检测规则;
采用所述应用程序安装包检测规则判断所述应用程序安装包是否存在运行漏洞;
若是,则向所述客户端上报所述应用程序安装包存在所述运行漏洞;
若否,则向所述客户端上报所述应用程序安装包通过安全检测。
2.根据权利要求1所述的方法,其特征在于,所述根据所述目标函数列表中携带的所述逻辑地址,判断是否存在地址偏移量,包括:
获取预设函数列表,所述预设函数列表中携带所述应用程序安装包的上一个版本对应的逻辑地址;
判断目标函数列表中携带的所述逻辑地址与预设函数列表中携带的所述上一个版本对应的逻辑地址是否一致;
若不一致,则确定存在地址偏移量。
3.根据权利要求1所述的方法,其特征在于,所述根据所述地址偏移量确定所述应用程序安装包的变更内容,包括:
若检测到函数变更指示关系中包含所述地址偏移量所对应的变更内容时,则根据所述函数变更指示关系获取所述应用程序安装包的变更内容。
4.根据权利要求1所述的方法,其特征在于,所述根据所述地址偏移量确定所述应用程序安装包的变更内容,包括:
若检测到函数变更指示关系中不包含所述地址偏移量所对应的变更内容时,则向所述客户端发送所述地址偏移量,以使所述客户端根据所述地址偏移量更新所述函数变更指示关系。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述应用程序安装包的变更内容包括所述应用程序安装包的函数变更类型以及变更模块名,所述变更模块名用于指示所述应用程序安装包中发生变更的模块名称;
其中,所述函数变更类型包括增加函数、删除函数以及修改函数中的至少一项。
6.一种应用程序安装包的检测方法,其特征在于,包括:
确定待检测的应用程序安装包;
反编译所述应用程序安装包,并获取经过反编译后的得到的所述应用程序安装包的目标函数列表,所述目标函数列表中携带所述应用程序安装包逻辑地址;
向服务器发送所述目标函数列表,以使所述服务器根据所述目标函数列表确定所述应用程序安装包的变更内容,并获取所述应用程序安装包的检测结果;
所述向服务器发送所述目标函数列表之后,所述方法还包括:
接收内容更新指令,所述内容更新指令用于指示函数变更指示关系的更新;
根据所述内容更新指令,对所述函数变更指示关系进行更新。
7.根据权利要求6所述的方法,其特征在于,所述反编译所述应用程序安装包,并获取经过反编译后的得到的所述应用程序安装包的目标函数列表,包括:
通过交互式反编译器IDA导出所述应用程序安装包的函数;
根据所述应用程序安装包的函数确定所述应用程序安装包的目标函数列表。
8.一种服务器,其特征在于,包括:
接收模块,用于接收客户端发送的待检测的应用程序安装包的目标函数列表,所述目标函数列表中携带所述应用程序安装包逻辑地址;
确定模块,用于根据所述接收模块接收的所述目标函数列表中携带的所述逻辑地址,判断是否存在地址偏移量,若是,则根据所述地址偏移量确定所述应用程序安装包的变更内容;
获取模块,用于若所述确定模块确定的所述变更内容记录在应用程序安装包的预设检测内容中,则根据所述应用程序安装包的变更内容以及所述应用程序安装包的预设检测内容,获取所述应用程序安装包的检测结果;
所述获取模块包括:
建立单元,用于根据所述应用程序安装包的变更内容以及所述应用程序安装包的预设检测内容,建立应用程序安装包检测规则;
第二判断单元,用于采用所述建立单元建立的所述应用程序安装包检测规则判断所述应用程序安装包是否存在运行漏洞;
第一上报单元,用于若所述第二判断单元采用所述应用程序安装包检测规则判断得到所述应用程序安装包存在运行漏洞,则向所述客户端上报所述应用程序安装包存在所述运行漏洞;
第二上报单元,用于若所述第二判断单元采用所述应用程序安装包检测规则判断得到所述应用程序安装包未存在运行漏洞,则向所述客户端上报所述应用程序安装包通过安全检测。
9.根据权利要求8所述的服务器,其特征在于,所述确定模块包括:
第一获取单元,用于获取预设函数列表,所述预设函数列表中携带所述应用程序安装包的上一个版本对应的逻辑地址;
第一判断单元,用于判断目标函数列表中携带的所述逻辑地址与所述第一获取单元获取的所述预设函数列表中携带的所述上一个版本对应的逻辑地址是否一致;
确定单元,用于若所述第一判断单元判断得到目标函数列表中携带的所述逻辑地址与所述预设函数列表中携带的所述上一个版本对应的逻辑地址不一致,则确定存在地址偏移量。
10.根据权利要求8所述的服务器,其特征在于,所述确定模块包括:
第二获取单元,用于若检测到函数变更指示关系中包含所述地址偏移量所对应的变更内容时,则根据所述函数变更指示关系获取所述应用程序安装包的变更内容。
11.根据权利要求8所述的服务器,其特征在于,所述确定模块包括:
发送单元,用于若检测到函数变更指示关系中不包含所述地址偏移量所对应的变更内容时,则向所述客户端发送所述地址偏移量,以使所述客户端根据所述地址偏移量更新所述函数变更指示关系。
12.根据权利要求8至11中任一项所述的服务器,其特征在于,所述应用程序安装包的变更内容包括所述应用程序安装包的函数变更类型以及变更模块名,所述变更模块名用于指示所述应用程序安装包中发生变更的模块名称;
其中,所述函数变更类型包括增加函数、删除函数以及修改函数中的至少一项。
13.一种客户端,其特征在于,包括:
确定模块,用于确定待检测的应用程序安装包;
获取模块,反编译所述确定模块确定的所述应用程序安装包,并获取经过反编译后的得到的所述应用程序安装包的目标函数列表,所述目标函数列表中携带所述应用程序安装包逻辑地址;
发送模块,用于向服务器发送所述获取模块获取的所述目标函数列表,以使所述服务器根据所述目标函数列表确定所述应用程序安装包的变更内容,并获取所述应用程序安装包的检测结果;
所述客户端还包括:
接收模块,用于所述发送模块向服务器发送所述目标函数列表之后,接收内容更新指令,所述内容更新指令用于指示函数变更指示关系的更新;
更新模块,用于根据所述接收模块接收的所述内容更新指令,对所述函数变更指示关系进行更新。
14.根据权利要求13所述的客户端,其特征在于,所述获取模块包括:
导出单元,用于通过交互式反编译器IDA导出所述应用程序安装包的函数;
确定单元,用于根据所述导出单元导出的所述应用程序安装包的函数确定所述应用程序安装包的目标函数列表。
15.一种应用程序安装包的检测系统,其特征在于,包括:服务器以及客户端;
所述客户端确定待检测的应用程序安装包;
所述客户端反编译所述应用程序安装包,并获取经过反编译后的得到的所述应用程序安装包的目标函数列表,所述目标函数列表中携带所述应用程序安装包逻辑地址;
所述服务器接收客户端发送的待检测的应用程序安装包的目标函数列表,所述目标函数列表中携带所述应用程序安装包逻辑地址;
所述服务器根据所述目标函数列表中携带的所述逻辑地址,判断是否存在地址偏移量,若是,则根据所述地址偏移量确定所述应用程序安装包的变更内容;
若所述变更内容记录在应用程序安装包的预设检测内容中,则所述服务器根据所述应用程序安装包的变更内容以及所述应用程序安装包的预设检测内容,获取所述应用程序安装包的检测结果;
所述根据所述应用程序安装包的变更内容以及所述应用程序安装包的预设检测内容,获取所述应用程序安装包的检测结果,包括:
根据所述应用程序安装包的变更内容以及所述应用程序安装包的预设检测内容,建立应用程序安装包检测规则;
采用所述应用程序安装包检测规则判断所述应用程序安装包是否存在运行漏洞;
若是,则向所述客户端上报所述应用程序安装包存在所述运行漏洞;
若否,则向所述客户端上报所述应用程序安装包通过安全检测。
一种应用程序安装包的检测方法、相关装置及系统\n技术领域\n[0001] 本发明涉及安全检测技术,尤其涉及一种应用程序安装包的检测方法、相关装置及系统。\n背景技术\n[0002] 随着互联网技术的发展,终端上安装的应用程序(英文全称:Application,英文缩写:APP)种类越来越多,而对APP安装包的安全性检测要求也逐渐提升。\n[0003] 目前,对APP安装包的检测普遍依赖于开发商自主提供版本内容的白皮书,在白皮书中阐述提审版本所包含的变更内容,运营商则依据该白皮书制定测试用例场景,并安排人力执行黑盒测试,为尽可能覆盖完整,通常会全量人工分析APP功能,具体流程请参阅图\n1,图1为现有技术中审核APP安装包安全性的流程示意图,可以根据图1中步骤101至步骤\n109所示的内容,完成APP安全包的检测。\n[0004] 然而采用人工分析APP安装包的安全性可能会出现以下的问题:\n[0005] 其中,第一个出现的问题为不能保证测试覆盖率的完整性,测试覆盖率的完整性依赖于内容开发商所提供白皮书的完整的和细致度,但是开发商提供的白皮书往往会出现内容过于简洁,甚至遗漏的情况。然而,目前也暂时没有有效且快速的方法来验证白皮书的完整性;\n[0006] 第二个出现的问题为人工测试的效率较低,在不确定测试是否完备的情况下,会尽可能反复覆盖全功能,保证版本质量,但是这无疑将要耗费大量的人力成本,且检测效率低。\n发明内容\n[0007] 本发明实施例提供了一种应用程序安装包的检测方法、相关装置及系统,可以在确定目标函数列表中存在地址偏移量后,可以逆推出应用程序安装包存在的变更内容,供测试人员对存在的变更内容进行有针对性的测试,无需反复全功能跑测,不但提升了变更内容的覆盖率,同时也减少了人力成本,从而提升了检测效率。\n[0008] 有鉴于此,本发明第一方面提供了一种应用程序安装包的检测方法,包括:\n[0009] 接收客户端发送的待检测的应用程序安装包的目标函数列表,所述目标函数列表中携带所述应用程序安装包逻辑地址;\n[0010] 根据所述目标函数列表中携带的所述逻辑地址,判断是否存在地址偏移量,若是,则根据所述地址偏移量确定所述应用程序安装包的变更内容;\n[0011] 若所述变更内容记录在应用程序安装包的预设检测内容中,则根据所述应用程序安装包的变更内容以及所述应用程序安装包的预设检测内容,获取所述应用程序安装包的检测结果。\n[0012] 本发明第二方面提供了一种应用程序安装包的检测方法,包括:\n[0013] 确定待检测的应用程序安装包;\n[0014] 反编译所述应用程序安装包,并获取经过反编译后的得到的所述应用程序安装包的目标函数列表,所述目标函数列表中携带所述应用程序安装包逻辑地址;\n[0015] 向服务器发送所述目标函数列表,以使所述服务器根据所述目标函数列表确定所述应用程序安装包的变更内容,并获取所述应用程序安装包的检测结果。\n[0016] 本发明第三方面提供了一种服务器,包括:\n[0017] 接收模块,用于接收客户端发送的待检测的应用程序安装包的目标函数列表,所述目标函数列表中携带所述应用程序安装包逻辑地址;\n[0018] 确定模块,用于根据所述接收模块接收的所述目标函数列表中携带的所述逻辑地址,判断是否存在地址偏移量,若是,则根据所述地址偏移量确定所述应用程序安装包的变更内容;\n[0019] 获取模块,用于若所述判断模块判断得到的所述变更内容记录在应用程序安装包的预设检测内容中,则根据所述应用程序安装包的变更内容以及所述应用程序安装包的预设检测内容,获取所述应用程序安装包的检测结果。\n[0020] 本发明第四方面提供了一种客户端,包括:\n[0021] 确定模块,用于确定待检测的应用程序安装包;\n[0022] 获取模块,反编译所述确定模块确定的所述应用程序安装包,并获取经过反编译后的得到的所述应用程序安装包的目标函数列表,所述目标函数列表中携带所述应用程序安装包逻辑地址;\n[0023] 发送模块,用于向服务器发送所述获取模块获取的所述目标函数列表,以使所述服务器根据所述目标函数列表确定所述应用程序安装包的变更内容,并获取所述应用程序安装包的检测结果。\n[0024] 本发明第五方面提供了一种应用程序安装包的检测系统,包括:服务器以及客户端;\n[0025] 所述客户端确定待检测的应用程序安装包;\n[0026] 所述客户端反编译所述应用程序安装包,并获取经过反编译后的得到的所述应用程序安装包的目标函数列表,所述目标函数列表中携带所述应用程序安装包逻辑地址;\n[0027] 所述服务器接收客户端发送的待检测的应用程序安装包的目标函数列表,所述目标函数列表中携带所述应用程序安装包逻辑地址;\n[0028] 所述服务器根据所述目标函数列表中携带的所述逻辑地址,判断是否存在地址偏移量,若是,则根据所述地址偏移量确定所述应用程序安装包的变更内容;\n[0029] 若所述变更内容记录在应用程序安装包的预设检测内容中,则所述服务器根据所述应用程序安装包的变更内容以及所述应用程序安装包的预设检测内容,获取所述应用程序安装包的检测结果。\n[0030] 从以上技术方案可以看出,本发明实施例具有以下优点:\n[0031] 本发明实施例中,提供了一种应用程序安装包的检测方法,首先服务器接收客户端发送的待检测的应用程序安装包的目标函数列表,其中,目标函数列表中携带了应用程序安装包逻辑地址,然后由服务器根据目标函数列表中携带的逻辑地址,判断是否存在地址偏移量,若是,则根据地址偏移量确定应用程序安装包的变更内容,若变更内容记录在应用程序安装包的预设检测内容中,则根据应用程序安装包的变更内容以及应用程序安装包的预设检测内容,进而获取应用程序安装包的检测结果。通过上述方式,在确定目标函数列表中存在地址偏移量后,可以逆推出应用程序安装包存在的变更内容,供测试人员对存在的变更内容进行有针对性的测试,无需反复全功能跑测,不但提升了变更内容的覆盖率,同时也减少了人力成本,从而提升了检测效率。\n附图说明\n[0032] 图1为现有技术中审核APP安装包安全性的流程示意图;\n[0033] 图2为本发明实施例中检测应用程序安装包的系统架构图;\n[0034] 图3为本发明实施例中应用程序安装包的检测方法一个交互实施例示意图;\n[0035] 图4为本发明实施例中应用程序安装包的检测方法一个实施例示意图;\n[0036] 图5为本发明实施例中应用程序安装包的检测流程示意图;\n[0037] 图6为本发明中一种地址偏移量的纪录格式示意代码图;\n[0038] 图7为本发明实施例中应用程序安装包的检测方法另一个实施例示意图;\n[0039] 图8为本发明应用场景中应用程序安装包的检测过程的流程示意图;\n[0040] 图9为本发明应用场景中用户配置文件的示意图;\n[0041] 图10为本发明应用场景中应用程序变更内容的示意图;\n[0042] 图11为本发明实施例中服务器一个实施例示意图;\n[0043] 图12为本发明实施例中服务器另一个实施例示意图;\n[0044] 图13为本发明实施例中服务器另一个实施例示意图;\n[0045] 图14为本发明实施例中服务器另一个实施例示意图;\n[0046] 图15为本发明实施例中服务器另一个实施例示意图;\n[0047] 图16为本发明实施例中客户端一个实施例示意图;\n[0048] 图17为本发明实施例中客户端另一个实施例示意图;\n[0049] 图18为本发明实施例中客户端另一个实施例示意图;\n[0050] 图19为本发明实施例中服务器一个实施例示意图;\n[0051] 图20为本发明实施例中客户端一个实施例示意图;\n[0052] 图21为本发明实施例中应用程序安装包的检测系统一个实施例示意图。\n具体实施方式\n[0053] 本发明实施例提供了一种应用程序安装包的检测方法、相关装置及系统,可以在确定目标函数列表中存在地址偏移量后,可以逆推出应用程序安装包存在的变更内容,供测试人员对存在的变更内容进行有针对性的测试,无需反复全功能跑测,不但提升了变更内容的覆盖率,同时也减少了人力成本,从而提升了检测效率。\n[0054] 本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。\n[0055] 应理解,本发明应用于应用程序安装包的检测系统,请参阅图2,图2为本发明实施例中检测应用程序安装包的系统架构图。如图2所示,图中包含客户端、网站服务器以及后台变更识别服务器,其中,图中的网站服务器以及后台变更识别服务器仅为一个示意,在实际应用中,可以将网站服务器和后台变更识别服务器的功能合并在同一台服务器中,为了便于说明各部分所做的工作,可以拆分为两种服务器进行不同的操作,然而这并不构成对本方案的限定。\n[0056] 其中,客户端具体可以为个人电脑(英文全称:Personal Computer,英文缩写:\nPC),或者是移动终端,例如智能手机、平板电脑或者个人数字助理(英文全称:Personal Digital Assistant,英文缩写:PDA)等,还可以是媒体播放设备,例如投影机、网络电视或者视音频播放器等,此处以PC客户端为例进行介绍,然而并不应构成对本发明方案的限定。\n[0057] 客户端与服务器相对应,为客户提供本地服务的程序。除了一些只在本地运行的应用程序之外,一般安装在普通的客户机上,需要与服务端互相配合运行。客户端和服务器端之间需要建立特定的通信连接,来保证应用程序的正常运行。\n[0058] 网站服务器是网络环境下为客户端提供某种服务的专用服务器,是驻留于因特网上某种类型计算机的程序,用户通过客户端与网站服务器之间建立通信连接,由此网站服务器便可以向客户端提供文档,除此以外,还在网站服务器中可以放置网站文件,让用户进行浏览,还可以放置数据文件,让用户进行下载。\n[0059] 后台变更识别服务器与客户端和网站服务器分别建立通信连接,根据客户端反编译应用程序安装包后得到的函数列表文件,来逆推发生变更的函数列表文件,在结合客户端提供的关联信息,识别和定位应用程序安装包中的变更内容。后台变更识别服务器告知网站服务器有哪些变更内容,使得网站服务器可以执行对应的变更内容检测。\n[0060] 需要说明的是,如果将网站服务器与后台变更识别服务器整合在同一个服务器中,那么该服务器便可以执行上述网站服务器的功能与后台变更识别服务器的功能,此处不再赘述。\n[0061] 为了便于理解,请参阅图3,图3为本发明实施例中应用程序安装包的检测方法一个交互实施例示意图,如图所示,具体为:\n[0062] 步骤201中,客户端反编译一个应用程序安装包,并获取包含应用程序逻辑模块的动态链接库文件,再通过反编译器导出动态链接库文件的函数,得到带逻辑地址的函数列表文件。\n[0063] 步骤202中,客户端获取用户配置信息,该用户配置信息中包括了指定要进行对比的版本信息。\n[0064] 需要说明的是,步骤202可以在步骤201之前进行,或者在步骤202之后进行,也可用与步骤202同时进行,此处不作限定。\n[0065] 步骤203中,客户端向后台变更识别服务器发送步骤201中获取到的带逻辑地址的函数列表文件,以及步骤202中获取到的用户配置信息。当然,如果后台变更识别服务器与网站服务器的功能合并后,客户端向该合并后服务器发送带逻辑地址的函数列表文件以及用户配置信息即可。\n[0066] 步骤204中,后台变更识别服务器根据用户配置信息确定要对比的旧版本信息,然后对比当前获取的函数列表文件与旧版本信息中的函数列表文件,其中,两个函数列表文件均携带逻辑地址。经过对比后可以得到逻辑地址存在变更的函数列表文件,该变更的函数列表文件中具体包括了变更的函数和类名。\n[0067] 步骤205中,在客户端可以自定义类名和功能模块名的关联文件,通过该关联文件中会指示不同的类名与功能模块之间的关联关系。\n[0068] 步骤206中,后台变更识别服务器结合自定义类名和功能模块名的关联文件,以及存在变更的函数列表文件,逆推出存在变更的功能模块列表。\n[0069] 步骤207中,后台变更识别服务器向网站服务器发送未关联到已知功能模块名的类名列表;\n[0070] 步骤208中,网站服务器根据未关联到已知功能模块名的类名列表,完善自定义类名和功能模块名关联文件。\n[0071] 需要说明的是,步骤207与步骤208为可选步骤,如果后台变更识别服务器确定变更的类名都能功能模块关联,网站服务器就不需要完善自定义类名和功能模块名的关联文件。\n[0072] 步骤209中,网站服务器可以输出完整的变更模块,也就是输出了所有发生变更的模块,最后,测试人员对变更模块进行有针对性的检测。\n[0073] 下面将从服务器的角度,对本发明中应用程序安装包的检测方法进行介绍,请参阅图4,本发明实施例中应用程序安装包的检测方法一个实施例包括:\n[0074] 301、接收客户端发送的待检测的应用程序安装包的目标函数列表,目标函数列表中携带应用程序安装包逻辑地址;\n[0075] 本实施例中,服务器接收客户端发送的待检测的应用程序安装包对应的面部函数列表,其中,目标函数列表中携带了待检测的应用程序安装包的逻辑地址。\n[0076] 具体地,本方案中的应用程序具体可以是指采用Cocos2d-x引擎开发的交互式应用程序。Cocos2d-x是一个开源的移动平面游戏框架,基于开源软件许可协议(英文全称:\nMassachusetts Institute of Technology,英文缩写:MIT)许可证下发布的。开发人员利用C++语言、Lua脚本语言以及JavaScript直译式脚本语言来进行跨平台交互式应用的开发及部署。\n[0077] Cocos2d-x项目可以很容易地建立在运行在苹果公司的移动操作系统(英文全称:\nApple Operation System,英文缩写:iOS)、安卓系统(英文全称:Android System)和黑莓系统(英文全称:Blackberry)等操作系统中。除此以外,Cocos2d-x还支持微软操作信息、苹果电脑操作系统和Linux操作系统等桌面操作系统,因此,开发人员编写的源代码很容易在桌面操作系统中编辑和调试。\n[0078] 本方案中的应用程序安装包具体可以是指安卓应用安装包(英文全称:Android Application Package,英文缩写:APK)文件,每个要安装到Android平台的应用程序都要被编译与打包成一个单独的文件,该文件即为APK文件,其后缀名为.apk。\n[0079] 本方案中的目标函数列表即为应用程序的安装包对应的子程序列表,一个较大的程序一般应分为若干个子程序,每一个模块用来实现一个特定的功能。高级语言中都有子程序这个概念,用子程序实现模块的功能。\n[0080] 在目标函数列表中携带了应用程序安装包逻辑地址,逻辑地址是指一个源程序在编译或者链接装配后指令和数据所用的相对地址,它是程序在内存中运行时,各程序代码,数据在内存中定位的参数,编译时一旦确定,逻辑地址是不会改变的。\n[0081] 302、根据目标函数列表中携带的逻辑地址,判断是否存在地址偏移量,若是,则根据地址偏移量确定应用程序安装包的变更内容;\n[0082] 本实施例中,服务器将目标函数列表中携带的逻辑地址与上一个版本中函数列表所携带的逻辑地址进行比较,判断是否存在地址偏移量。\n[0083] 通常情况下,如果对函数进行变更就会发生逻辑地址的偏移,当确定目标函数列表存在地址偏移量时,就能够根据该地址偏移量确定应用程序安装包中发生变更的内容。\n[0084] 303、若变更内容记录在应用程序安装包的预设检测内容中,则根据应用程序安装包的变更内容以及应用程序安装包的预设检测内容,获取应用程序安装包的检测结果。\n[0085] 本实施例中,检测发生变更的内容是否存在与应用程序安装包对应的预设检测内容中,如果确定存在于预设检测内容中,则可以根据变更内容以及预设检测内容,获取应用程序安装包的检测结果。\n[0086] 具体地,在对应用程序安装包进行检测前,需要预先提供预设检测内容,即“白皮书”。“白皮书”作为一种官方文件代表应用程序开发商的立场,需要在“白皮书”中准确的说明待检测应用程序的变更内容,如果没有完整且准确地说明变更内容,则需要开发商重新提供相应内容。\n[0087] 于是,在服务器确定了变更内容后,还需要检测该变更内容是否存在于预设检测内容中,如果存在,才进行有针对性的测试,并获取检测结果。\n[0088] 下面将说明本方案的应用流程,请参阅图5,图5为本发明实施例中应用程序安装包的检测流程示意图,如图所示,具体为:\n[0089] 在步骤401中,假设当前检测的应用程序安装包版本为10.1.3,于是客户端获取\n10.1.3版本对应的函数列表文件,其中,该函数列表文件中携带逻辑地址。在步骤402中客户端接收用户填写的配置文件,其中,配置文件包含了指定的对比版本号10.1.2,于是在步骤403中客户端向服务器提交携带逻辑地址的函数列表文件以及配置文件,使得服务器在步骤404中可以对比10.1.3版本与10.1.2版本对应的逻辑地址,从而根据对比得到的偏移地址来确定变更内容。最后在步骤405中,服务器获得10.1.3版本的变更内容详情,并可以向客户端发送该变更内容详情,以使测试人员得知所需的内容。\n[0090] 本发明实施例中,提供了一种应用程序安装包的检测方法,可以在确定目标函数列表中存在地址偏移量后,逆推出应用程序安装包存在的变更内容,供测试人员对存在的变更内容进行有针对性的测试,无需反复全功能跑测,不但提升了变更内容的覆盖率,同时也减少了人力成本,从而提升了检测效率。\n[0091] 可选地,在上述图4对应的实施例的基础上,本发明实施例提供的应用程序安装包的检测方法第一个可选实施例中,根据目标函数列表中携带的逻辑地址,判断是否存在地址偏移量,可以包括:\n[0092] 获取预设函数列表,预设函数列表中携带应用程序安装包的上一个版本对应的逻辑地址;\n[0093] 判断目标函数列表中携带的逻辑地址与预设函数列表中携带的上一个版本对应的逻辑地址是否一致;\n[0094] 若不一致,则确定存在地址偏移量。\n[0095] 本实施例中,服务器可以根据目标函数列表中携带的逻辑地址,判断该逻辑地址是否发生偏移,即是否存在偏移地址,如果存在偏移地址,则还能够根据地址偏移量逆推出应用程序安装包的变更内容。\n[0096] 具体地,服务器可以先获取预设函数列表,该预设函数列表为预先存储的函数列表,假设当前测试的版本号为10.1.0.5,在版本10.1.0.5之前还有三个已经使用过的版本,按照从旧版本到新版本的更新瞬间,为版本10.1.0.0、版本10.1.0.2以及版本10.1.0.4,为了更快地了解本次测试的版本与上一个版本之间的变更内容,通常会选取上一个版本作为对比版本,于是选用了版本10.1.0.4作为对比版本。\n[0097] 接下来分别从版本10.1.0.4对应的预设函数列表中获取逻辑地址,以及从版本\n10.1.0.5对应的目标函数列表中获取逻辑地址。服务器进而判断两者的逻辑地址是否一致,可以采用逐行对比的方式进行检测。如果检测到某一行或者某些行的逻辑地址不一致,则可以认为存在地址偏移量。\n[0098] 其次,本发明实施例中,提供了如何检测是否存在地址偏移量的方法。通过与上一版本的逻辑地址进行对比,就能准确地得出本次测试的版本中存在的地址偏移量,从而更快且更准确地定位本次测试中的变更内容,以此提升方案的实用性。\n[0099] 可选地,在上述图4对应的实施例的基础上,本发明实施例提供的应用程序安装包的检测方法第二个可选实施例中,根据地址偏移量确定应用程序安装包的变更内容,可以包括:\n[0100] 若检测到函数变更指示关系中包含地址偏移量所对应的变更内容时,则根据函数变更指示关系获取应用程序安装包的变更内容。\n[0101] 本实施例中,如果服务器检测到函数变更指示关系中包含了地址偏移量所对应的变更内容时,则可以根据函数变更指示关系获取应用程序安装包的变更内容。\n[0102] 具体地,在函数变更指示关系中包含了自定义的类名和功能模块关联关系。首先通过与指定版本的逻辑地址进行对比来确定出变更的函数和类,再结合函数变更指示关系中包含的自定义的类名和功能模块关联关系,逆推出当前版本存在的变更内容。具体可以如下表1所示:\n[0103] 表1\n[0104]\n类名 功能模块\n001 A\n002 B\n003 C\n004 D\n005 E\n006 F\n007 G\n008 H\n009 I\n[0105] 假设得到变更的类名为005,则可以通过表1所示内容确定变更的内容为功能模块为E。\n[0106] 其次,本发明实施例中,在检测到函数变更指示关系中包含地址偏移量所对应的变更内容时,能够直接确定出对应的变更内容,不但提升了检测变更内容的效率,同时增加了确定变更内容的准确性。\n[0107] 可选地,在上述图4对应的实施例的基础上,本发明实施例提供的应用程序安装包的检测方法第三个可选实施例中,根据地址偏移量确定应用程序安装包的变更内容,可以包括:\n[0108] 若检测到函数变更指示关系中不包含地址偏移量所对应的变更内容时,则向客户端发送地址偏移量,以使客户端根据地址偏移量更新函数变更指示关系。\n[0109] 本实施例中,如果服务器检测到函数变更指示关系中不包含了地址偏移量所对应的变更内容,则可以直接向客户端发送地址偏移量,然后由客户端根据该地址偏移量更新函数变更指示关系。\n[0110] 具体地,如果函数变更指示关系中不包含该地址偏移量对应的变更内容,说明本次得到的地址偏移量与对应的变更内容是新信息,于是,服务器向将该地址偏移量发送至客户端,通过人工检测或者机器自动检测的方式来确定该地址偏移量对应的变更内容,然后更新函数变更指示关系,即,将本次得到的地址偏移量与变更内容输入至函数变更指示关系中,从而进行更新。\n[0111] 其次,本发明实施例中,对每次对比识别出未能关联到已知变更内容的类名列表,再反向去配置完善函数变更指示关系,从而保证在后续的关联识别处理时,这部分类名可以与变更内容成功关联,以此提升方案的可行性。\n[0112] 可选地,在上述图4对应的实施例的基础上,本发明实施例提供的应用程序安装包的检测方法第四个可选实施例中,根据应用程序安装包的变更内容以及应用程序安装包的预设检测内容,获取应用程序安装包的检测结果,可以包括:\n[0113] 根据应用程序安装包的变更内容以及应用程序安装包的预设检测内容,建立应用程序安装包检测规则;\n[0114] 采用应用程序安装包检测规则判断应用程序安装包是否存在运行漏洞;\n[0115] 若是,则向客户端上报应用程序安装包存在运行漏洞;\n[0116] 若否,则向客户端上报应用程序安装包通过安全检测。\n[0117] 本实施例中,服务器根据应用程序安装包的变更内容以及预设检测内容,建立应用程序安装包的检测规则,其中,预设检测内容可以为在“白皮书”中记载的设计用例和执行测试的内容等。如果变更内容已记载于“白皮书”中,那便可以从“白皮书”中找到相应的检测内容,根据该检测内容建立一套检测规则。\n[0118] 服务器采用应用程序安装包的检测规则来判断应用程序安装包是否存在运行漏洞,如果存在漏洞,就向客户端上报应用程序安装包存在运行漏洞。相反地,如果不存在漏洞,则向客户端上报应用程序安装包通过安全检测,也就说明该应用程序安装包可以被广泛的下载与安装。\n[0119] 其次,本发明实施例中,服务器根据应用程序安装包的变更内容和预设检测内容来建立起相应的检测规则,并且采用该检测规则对应用程序安装包进行检测,从而帮助检测人员更快且准确地了解该应用程序安装包是否存在安全漏洞,以此提升方案的可行性。\n[0120] 可选地,在上述图4以及图4对应的第一至第四个实施例中任一项的基础上,本发明实施例提供的应用程序安装包的检测方法第五个可选实施例中,应用程序安装包的变更内容包括应用程序安装包的函数变更类型以及变更模块名,变更模块名用于指示应用程序安装包中发生变更的模块名称;\n[0121] 其中,函数变更类型包括增加函数、删除函数以及修改函数中的至少一项。\n[0122] 本实施例中,应用程序安装包中的变更内容包括了函数变更的类型以及变更模块名,其中,通过变更模块名可以确定在应用程序安装包中发生变更的函数类名。\n[0123] 而函数变更类型包括增加函数、删除函数以及修改函数中的至少一项。服务器遍历带逻辑地址的目标函数列表和预设函数列表,逐行对目标函数列表进行处理,计算两者函数的地址偏移量的绝对值,按固定格式写入文件,生成带偏移地址的函数列表文件。\n[0124] 请参阅图6,图6为本发明中一种地址偏移量的纪录格式示意代码图,图中用虚线框圈出来的部分从左至右分别为函数backFunc、函数frontFunc和函数addrOffset,记录格式如图 6所示,即backFunc->frontFunc is addrOffset。\n[0125] 而函数变更类型与相邻函数地址偏移量变更的关系具体可以如下表2所示:\n[0126] 表2\n[0127]\n[0128]\n[0129] 根据表2所示的内容,可以得到如下结论:\n[0130] (1)在代码相同,编译指令相同时,编译生成的动态链接库文件libgame.so中函数逻辑地址也完全相同,不会随时间变化;\n[0131] (2)编译器版本相同,虽在不同物理机中,结果也不会发生变化;\n[0132] (3)仅代码行内部数值性变化,无代码行的增减,生成的动态链接库文件libgame.so的函数列表的逻辑地址的偏移量不变;\n[0133] (4)有代码行增减,函数增减,文件增减,生成的动态链接库文件libgame.so的函数的逻辑地址偏移量会变化。\n[0134] (5)当函数间无任何代码变更,动态链接库文件libgame.so中对应函数间逻辑地址偏移量不变。\n[0135] 需要说明的是,更换编译器或者编译器基础配置选项变更,一般均会导致动态链接库文件libgame.so中函数逻辑地址偏移量的全量变更,考虑到在实际应用开发过程中此类变更较少且均会周知,因此本方案暂不对这种场景研究,但实际该类变更在当前方案中可以被识别,只是变更量大,不具备良好的指导精准测试的意义,故此处不做限定。\n[0136] 再次,本发明实施例中,还可以进一步地确定函数变更类型以及变更模块名,由此更准确地逆推出变更模块名所对应的函数变更类型,以此提升方案的实用性和应用效率。\n[0137] 上述实施例是从服务器的角度对本发明中应用程序安装包的检测方法进行介绍,下面将以客户端的角度对本发明中应用程序安装包的检测方法进行介绍,请参阅图7,本发明实施例中应用程序安装包的检测方法一个实施例包括:\n[0138] 501、确定待检测的应用程序安装包;\n[0139] 本实施例中,首先由客户端根据用户发出的检测指令,确定待检测的应用程序安装包。\n[0140] 应用程序安装包具体可以是指APK文件,每个要安装到Android平台的应用程序都要被编译与打包成一个单独的文件,该文件即为APK文件,其后缀名为.apk。\n[0141] 502、反编译应用程序安装包,并获取经过反编译后的得到的应用程序安装包的目标函数列表,目标函数列表中携带应用程序安装包逻辑地址;\n[0142] 本实施例中,客户端可以反编译应用程序安装包,其中,高级语言源程序经过编译变成可执行文件,而反编译就是其逆过程。通过反编译可以推导出软件产品所使用的思路、原理、结构、算法、处理过程和运行方法等设计要素,某些特定情况下可能推导出源代码。\n[0143] 应用程序安装包经过反编译后,可以得到反编译后应用程序安装包对应的目标函数列表,且在目标函数列表中携带了该待检测的应用程序安装包的逻辑地址。\n[0144] 503、向服务器发送目标函数列表,以使服务器根据目标函数列表确定应用程序安装包的变更内容,并获取应用程序安装包的检测结果。\n[0145] 本实施例中,进而由客户端向服务器发送经过反编译后得到的目标函数列表,使得服务器可以根据目标函数列表来确定待检测的应用程序安装包是否存在变更内容,然后根据变更内容确定对应的变更内容,最后检测该便能内容并得到应用程序安装包的检测结果。\n[0146] 本发明实施例中,提供了一种应用程序安装包的检测方法,可以在确定目标函数列表中存在地址偏移量后,可以逆推出应用程序安装包存在的变更内容,供测试人员对存在的变更内容进行有针对性的测试,无需反复全功能跑测,不但提升了变更内容的覆盖率,同时也减少了人力成本,从而提升了检测效率。\n[0147] 可选地,在上述图7对应的实施例的基础上,本发明实施例提供的应用程序安装包的检测方法第一个可选实施例中,反编译应用程序安装包,并获取经过反编译后的得到的应用程序安装包的目标函数列表,可以包括:\n[0148] 通过交互式反编译器IDA导出应用程序安装包的函数;\n[0149] 根据应用程序安装包的函数确定应用程序安装包的目标函数列表。\n[0150] 本实施例中,客户端通过交互式反编译器(英文全称:Interactive \nDisassembler,英文缩写:IDA)到处函数,并根据该函数得到目标函数列表,从而可以计算出函数地址的地址偏移量。\n[0151] 其中,IDA是一个交互式反汇编工具,就其本质而言,IDA是一种递归下降反汇编器。但是,为了提高递归下降过程的效率,IDA的开发者付出了巨大的努力,来为这个过程开发逻辑。为了克服递归下降的一个最大的缺点,IDA在区分数据与代码的同时,还设法确定这些数据的类型。虽然在IDA中看到的是汇编语言形式的代码,但IDA的主要目标之一,在于呈现尽可能接近源代码的代码。此外,IDA不仅使用数据类型信息,而且通过派生的变量和函数名称来尽其所能地注释生成的反汇编代码。这些注释将原始十六进制代码的数量减到最少,并显著增加了向用户提供的符号化信息的数量。\n[0152] 其次,本发明实施例中,通过IDA导出应用程序安装包的函数,一方面为为方案的实现提供了一种具体的可行方式,从而增强方案的可行性,另一方面,IDA有两种可用版本。\n标准版可以支持二十多种处理器,高级版可以支持50多种处理器,从而增强方案的适用范围。\n[0153] 可选地,在上述图7对应的实施例的基础上,本发明实施例提供的应用程序安装包的检测方法第二个可选实施例中,向服务器发送目标函数列表之后,还可以包括:\n[0154] 接收内容更新指令,内容更新指令用于指示函数变更指示关系的更新;\n[0155] 根据内容更新指令,对函数变更指示关系进行更新。\n[0156] 本实施例中,客户端向服务器发送目标函数列表之后,如果发现目标函数列表中的逻辑地址与预设函数列表中的逻辑地址之间偏移地址没有在函数变更指示关系中,那么可以通过手动的方式或者自动的方式输入内容更新指令,在内容更新指令中携带了类名和变更内容的标识,从而使得客户端根据该内容更新指令,对函数变更指示关系进行更新。\n[0157] 其中,手动更新可以是用户将类名和变更内容输入至客户端,自动更新则是由设备自动将没有在函数变更指示关系中的类名加入至该函数变更指示关系,然后再获取变更内容,随后则直接更新函数变更指示关系。\n[0158] 其次,本发明实施例中,客户端进接收用户发出的内容更新指令,并且及时地在客户端侧进行函数变更指示关系的更新,通过反向配置完善自定义的函数变更指示关系,从而保证在后续的关联识别处理时,这部分类名可以和变更内容成功关联,从而提升方案的应用效率。\n[0159] 为便于理解,下面可以以一个具体应用场景对本发明中应用程序安装包的检测过程进行详细描述,请参阅图8,图8为本发明应用场景中应用程序安装包的检测过程的流程示意图,具体为:\n[0160] 步骤601中,甲公司开发了一款交互式应用,本次新推出了该交互式应用的版本\n10.98.5,在过去的一年中,甲公司推出过第一版的交互式应用,版本号为10.98.0,这次在正式上线前,还需要检测版本10.98.5对应的安装包是否存在漏洞。\n[0161] 步骤602中,甲公司需要提供本次推出的交互式应用对应的版本号码以及版本白皮书,为了便于介绍,该白皮书可称为10.98.5白皮书。\n[0162] 步骤603中,精确地定位出新版本的变更内容。具体通过下列几个步骤实现:\n[0163] 首先反编译该应用程序对应的APK文件,然后获取到libgame.so文件,再通过IDA反编译libgame.so文件,以获取到带逻辑地址的函数列表文件;\n[0164] 接着,用户提交包含对比版本号信息的配置文件,即关于版本10.98.0的配置文件,请参阅图9,图9为本发明应用场景中用户配置文件的示意图,如图所示,在A示意的部分中输入上传的文件,其中,包括了版本配置文件,待处理动态链接库文件libgame.so,自定义的类名和功能模块名的关联文件,以及当前版本10.98.5带逻辑地址的函数列表文件。当文件上传完毕后,启动B示意的“执行对比”按钮。最后,可以在C示意的部分和D示意的部分中\n[0165] 查看结果,分别可以查看超级文本标记语言(英文全称:Hyper Text Markup Language,英文缩写:HTML)结果,即本次对比的变化内容,还可以查看model.txt,即存在变化但无法管理功能模块的类名。\n[0166] 通过上述方式能够逆推出变更的内容。\n[0167] 步骤604中,判断逆推得到的变更内容是否存在于甲公司自行提供的白皮书中,若存在,则进入步骤605,反之,则跳转至步骤608.\n[0168] 步骤605中,开始进行测试审核,根据标识出的变更内容,结合白皮书重大设计用例和检测方式进行检测。请参阅图10,图10为本发明应用场景中应用程序变更内容的示意图,后台进行比对识别后,以可伸展的树形结构展示存在变更的功能模块信息。\n[0169] 其中,图10中名为Cmcoat的文件即为变更模块名,根据第一个add文件确定变更类型为增加类型,然后进一步获取变更类名对应的变更函数列表。而下一个变更类型为删除类型,同样进一步获取变更类名对应的变更函数列表,在实际应用中,还可能包括更多的变更类名对应的变更函数列表,此处仅为一个示意。\n[0170] 测试人员根据识别出的变更信息,与甲公司提供的白皮书进行核对,并派活执行版本的审核。同时,测试人员还会根据未关联的类名列表,完善自定义类名和功能模块名关联文件。\n[0171] 步骤606中,进一步检测变更的内容是否存在白皮书中为标定的内容,同时检测是否遗留重大缺陷,重大缺陷会导致该交互式应用无法正常使用,若既没有重大缺陷,又再次确定该变更内容出现在白皮书中,则进入步骤607,反之,无论是存在重大缺陷,还是该变更内容未出现在白皮书中,都跳转至步骤608。\n[0172] 步骤607中,获取到测试结果,且测试结果为10.98.5版本号对应的交互式应用APK无漏洞,即可发布,以使用户安装并下载;\n[0173] 步骤608中,当出现白皮书中没有标定的内容,或者在测试APK文件后得到该文件存在漏洞时,均需要向甲公司撤回版本10.95.5的APK文件,在重新举证额外变更内容后,再次提交白皮书后并进行又一轮的审核。\n[0174] 下面对本发明中的服务器进行详细描述,请参阅图11,本发明实施例中的服务器为包括:\n[0175] 接收模块701,用于接收客户端发送的待检测的应用程序安装包的目标函数列表,所述目标函数列表中携带所述应用程序安装包逻辑地址;\n[0176] 确定模块702,用于根据所述接收模块701接收的所述目标函数列表中携带的所述逻辑地址,判断是否存在地址偏移量,若是,则根据所述地址偏移量确定所述应用程序安装包的变更内容;\n[0177] 获取模块703,用于若所述判断模块702判断得到的所述变更内容记录在应用程序安装包的预设检测内容中,则根据所述应用程序安装包的变更内容以及所述应用程序安装包的预设检测内容,获取所述应用程序安装包的检测结果。\n[0178] 本实施例中,接收模块701接收客户端发送的待检测的应用程序安装包的目标函数列表,所述目标函数列表中携带所述应用程序安装包逻辑地址,确定模块702根据所述接收模块701接收的所述目标函数列表中携带的所述逻辑地址,判断是否存在地址偏移量,若是,则根据所述地址偏移量确定所述应用程序安装包的变更内容,若所述判断模块702判断得到的所述变更内容记录在应用程序安装包的预设检测内容中,则获取模块703根据所述应用程序安装包的变更内容以及所述应用程序安装包的预设检测内容,获取所述应用程序安装包的检测结果。\n[0179] 本发明实施例中,提供了一种服务器,可以在确定目标函数列表中存在地址偏移量后,可以逆推出应用程序安装包存在的变更内容,供测试人员对存在的变更内容进行有针对性的测试,无需反复全功能跑测,不但提升了变更内容的覆盖率,同时也减少了人力成本,从而提升了检测效率。\n[0180] 可选地,在上述图11所对应的实施例的基础上,请参阅图12,本发明实施例提供的服务器的另一实施例中,\n[0181] 所述确定模块702包括:\n[0182] 第一获取单元7021,用于获取预设函数列表,所述预设函数列表中携带所述应用程序安装包的上一个版本对应的逻辑地址;\n[0183] 第一判断单元7022,用于判断目标函数列表中携带的所述逻辑地址与所述第一获取单元7021获取的所述预设函数列表中携带的所述上一个版本对应的逻辑地址是否一致;\n[0184] 确定单元7023,用于若所述第一判断单元7022判断得到目标函数列表中携带的所述逻辑地址与所述预设函数列表中携带的所述上一个版本对应的逻辑地址不一致,则确定存在地址偏移量。\n[0185] 其次,本发明实施例中,提供了如何检测是否存在地址偏移量的方法。通过与上一版本的逻辑地址进行对比,就能准确地得出本次测试的版本中存在的地址偏移量,从而更快且更准确地定位本次测试中的变更内容,以此提升方案的实用性。\n[0186] 可选地,在上述图11所对应的实施例的基础上,请参阅图13,本发明实施例提供的服务器的另一实施例中,\n[0187] 所述确定模块702包括:\n[0188] 第二获取单元7024,用于若检测到函数变更指示关系中包含所述地址偏移量所对应的变更内容时,则根据所述函数变更指示关系获取所述应用程序安装包的变更内容。\n[0189] 其次,本发明实施例中,在检测到函数变更指示关系中包含地址偏移量所对应的变更内容时,能够直接确定出对应的变更内容,不但提升了检测变更内容的效率,同时增加了确定变更内容的准确性。\n[0190] 可选地,在上述图11所对应的实施例的基础上,请参阅图14,本发明实施例提供的服务器的另一实施例中,\n[0191] 所述确定模块702包括:\n[0192] 发送单元7025,用于若检测到函数变更指示关系中不包含所述地址偏移量所对应的变更内容时,则向所述客户端发送所述地址偏移量,以使所述客户端根据所述地址偏移量更新所述函数变更指示关系。\n[0193] 其次,本发明实施例中,对每次对比识别出未能关联到已知变更内容的类名列表,再反向去配置完善函数变更指示关系,从而保证在后续的关联识别处理时,这部分类名可以与变更内容成功关联,以此提升方案的可行性。\n[0194] 可选地,在上述图11所对应的实施例的基础上,请参阅图15,本发明实施例提供的服务器的另一实施例中,\n[0195] 所述获取模块703包括:\n[0196] 建立单元7031,用于根据所述应用程序安装包的变更内容以及所述应用程序安装包的预设检测内容,建立应用程序安装包检测规则;\n[0197] 第二判断单元7032,用于采用所述建立单元7031建立的所述应用程序安装包检测规则判断所述应用程序安装包是否存在运行漏洞;\n[0198] 第一上报单元7033,用于若所述第二判断单元7032采用所述应用程序安装包检测规则判断得到所述应用程序安装包存在运行漏洞,则向所述客户端上报所述应用程序安装包存在所述运行漏洞;\n[0199] 第二上报单元7034,用于若所述第二判断单元7032采用所述应用程序安装包检测规则判断得到所述应用程序安装包未存在运行漏洞,则向所述客户端上报所述应用程序安装包通过安全检测。\n[0200] 其次,本发明实施例中,服务器根据应用程序安装包的变更内容和预设检测内容来建立起相应的检测规则,并且采用该检测规则对应用程序安装包进行检测,从而帮助检测人员更快且准确地了解该应用程序安装包是否存在安全漏洞,以此提升方案的可行性。\n[0201] 可选地,在上述图11至图15中任一项所对应的实施例的基础上,本发明实施例提供的服务器的另一实施例中,\n[0202] 所述应用程序安装包的变更内容包括所述应用程序安装包的函数变更类型以及变更模块名,所述变更模块名用于指示所述应用程序安装包中发生变更的模块名称;\n[0203] 其中,所述函数变更类型包括增加函数、删除函数以及修改函数中的至少一项。\n[0204] 再次,本发明实施例中,还可以进一步地确定函数变更类型以及变更模块名,由此更准确地逆推出变更模块名所对应的函数变更类型,以此提升方案的实用性和应用效率。\n[0205] 上面对本发明中的服务器进行详细描述,下面将对本发明中的客户端进行介绍,请参阅图16,本发明实施例中的客户端为包括:\n[0206] 确定模块801,用于确定待检测的应用程序安装包;\n[0207] 获取模块802,反编译所述确定模块801确定的所述应用程序安装包,并获取经过反编译后的得到的所述应用程序安装包的目标函数列表,所述目标函数列表中携带所述应用程序安装包逻辑地址;\n[0208] 发送模块803,用于向服务器发送所述获取模块802获取的所述目标函数列表,以使所述服务器根据所述目标函数列表确定所述应用程序安装包的变更内容,并获取所述应用程序安装包的检测结果。\n[0209] 本实施例中,确定模块801确定待检测的应用程序安装包,获取模块802反编译所述确定模块801确定的所述应用程序安装包,并获取经过反编译后的得到的所述应用程序安装包的目标函数列表,所述目标函数列表中携带所述应用程序安装包逻辑地址,发送模块803向服务器发送所述获取模块802获取的所述目标函数列表,以使所述服务器根据所述目标函数列表确定所述应用程序安装包的变更内容,并获取所述应用程序安装包的检测结果。\n[0210] 本发明实施例中,提供了一种客户端,可以在确定目标函数列表中存在地址偏移量后,可以逆推出应用程序安装包存在的变更内容,供测试人员对存在的变更内容进行有针对性的测试,无需反复全功能跑测,不但提升了变更内容的覆盖率,同时也减少了人力成本,从而提升了检测效率。\n[0211] 可选地,在上述图16所对应的实施例的基础上,请参阅图17,本发明实施例提供的客户端的另一实施例中,\n[0212] 所述获取模块802包括:\n[0213] 导出单元8021,用于通过交互式反编译器IDA导出所述应用程序安装包的函数;\n[0214] 确定单元8022,用于根据所述导出单元8021导出的所述应用程序安装包的函数确定所述应用程序安装包的目标函数列表。\n[0215] 其次,本发明实施例中,通过IDA导出应用程序安装包的函数,一方面为为方案的实现提供了一种具体的可行方式,从而增强方案的可行性,另一方面,IDA有两种可用版本。\n标准版可以支持二十多种处理器,高级版可以支持50多种处理器,从而增强方案的适用范围。\n[0216] 可选地,在上述图16所对应的实施例的基础上,请参阅图18,本发明实施例提供的客户端的另一实施例中,\n[0217] 所述客户端80还包括:\n[0218] 接收模块804,用于所述发送模块803向服务器发送所述目标函数列表之后,接收内容更新指令,所述内容更新指令用于指示函数变更指示关系的更新;\n[0219] 更新模块805,用于根据所述接收模块805接收的所述内容更新指令,对所述函数变更指示关系进行更新。\n[0220] 其次,本发明实施例中,客户端进接收用户发出的内容更新指令,并且及时地在客户端侧进行函数变更指示关系的更新,通过反向配置完善自定义的函数变更指示关系,从而保证在后续的关联识别处理时,这部分类名可以和变更内容成功关联,从而提升方案的应用效率。\n[0221] 图19是本发明实施例提供的一种服务器结构示意图,该服务器900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)922(例如,一个或一个以上处理器)和存储器932,一个或一个以上存储应用程序942或数据944的存储介质930(例如一个或一个以上海量存储设备)。其中,存储器932和存储介质930可以是短暂存储或持久存储。存储在存储介质930的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器922可以设置为与存储介质930通信,在服务器900上执行存储介质930中的一系列指令操作。\n[0222] 服务器900还可以包括一个或一个以上电源926,一个或一个以上有线或无线网络接口950,一个或一个以上输入输出接口958,和/或,一个或一个以上操作系统941,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。\n[0223] 上述实施例中由服务器所执行的步骤可以基于该图19所示的服务器结构。\n[0224] 其中,CPU 922用于,\n[0225] 接收客户端发送的待检测的应用程序安装包的目标函数列表,所述目标函数列表中携带所述应用程序安装包逻辑地址;\n[0226] 根据所述目标函数列表中携带的所述逻辑地址,判断是否存在地址偏移量,若是,则根据所述地址偏移量确定所述应用程序安装包的变更内容;\n[0227] 若所述变更内容记录在应用程序安装包的预设检测内容中,则根据所述应用程序安装包的变更内容以及所述应用程序安装包的预设检测内容,获取所述应用程序安装包的检测结果。\n[0228] 本发明实施例还提供了另一种客户端,如图20所示,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该终端可以为包括PC、手机、平板电脑、个人数字助理(英文全称:Personal Digital Assistant,英文缩写:PDA)、销售终端(英文全称:Point of Sales,英文缩写:POS)、车载电脑等任意终端设备,以终端为PC为例:\n[0229] 图20示出的是与本发明实施例提供的终端相关的PC的部分结构的框图。参考图\n20,PC包括:射频(英文全称:Radio Frequency,英文缩写:RF)电路1010、存储器1020、输入单元1030、显示单元1040、传感器1050、音频电路1060、无线保真(英文全称:wireless fidelity,英文缩写:WiFi)模块1070、处理器1080、以及电源1090等部件。本领域技术人员可以理解,图20中示出的PC结构并不构成对PC的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。\n[0230] 下面结合图20对PC的各个构成部件进行具体的介绍:\n[0231] RF电路1010可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器1080处理;另外,将设计上行的数据发送给基站。通常,RF电路\n1010包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(英文全称:Low Noise Amplifier,英文缩写:LNA)、双工器等。此外,RF电路1010还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(英文全称:Global System of Mobile communication,英文缩写:GSM)、通用分组无线服务(英文全称:General Packet Radio Service,GPRS)、码分多址(英文全称:Code Division Multiple Access,英文缩写:CDMA)、宽带码分多址(英文全称:Wideband Code Division Multiple Access,英文缩写:WCDMA)、长期演进(英文全称:Long Term Evolution,英文缩写:LTE)、电子邮件、短消息服务(英文全称:Short Messaging Service,SMS)等。\n[0232] 存储器1020可用于存储软件程序以及模块,处理器1080通过运行存储在存储器\n1020的软件程序以及模块,从而执行PC的各种功能应用以及数据处理。存储器1020可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据PC的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器1020可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。\n[0233] 输入单元1030可用于接收输入的数字或字符信息,以及产生与PC的用户设置以及功能控制有关的键信号输入。具体地,输入单元1030可包括触控面板1031以及其他输入设备1032。触控面板1031,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板1031上或在触控面板1031附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板1031可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器1080,并能接收处理器1080发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板1031。除了触控面板\n1031,输入单元1030还可以包括其他输入设备1032。具体地,其他输入设备1032可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。\n[0234] 显示单元1040可用于显示由用户输入的信息或提供给用户的信息以及PC的各种菜单。显示单元1040可包括显示面板1041,可选的,可以采用液晶显示器(英文全称:Liquid Crystal Display,英文缩写:LCD)、有机发光二极管(英文全称:Organic Light-Emitting Diode,英文缩写:OLED)等形式来配置显示面板1041。进一步的,触控面板1031可覆盖显示面板1041,当触控面板1031检测到在其上或附近的触摸操作后,传送给处理器1080以确定触摸事件的类型,随后处理器1080根据触摸事件的类型在显示面板1041上提供相应的视觉输出。虽然在图20中,触控面板1031与显示面板1041是作为两个独立的部件来实现PC的输入和输入功能,但是在某些实施例中,可以将触控面板1031与显示面板1041集成而实现PC的输入和输出功能。\n[0235] PC还可包括至少一种传感器1050,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板1041的亮度,接近传感器可在PC移动到耳边时,关闭显示面板1041和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别PC姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于PC还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。\n[0236] 音频电路1060、扬声器1061,传声器1062可提供用户与PC之间的音频接口。音频电路1060可将接收到的音频数据转换后的电信号,传输到扬声器1061,由扬声器1061转换为声音信号输出;另一方面,传声器1062将收集的声音信号转换为电信号,由音频电路1060接收后转换为音频数据,再将音频数据输出处理器1080处理后,经RF电路1010以发送给比如另一PC,或者将音频数据输出至存储器1020以便进一步处理。\n[0237] WiFi属于短距离无线传输技术,PC通过WiFi模块1070可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图20示出了WiFi模块1070,但是可以理解的是,其并不属于PC的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。\n[0238] 处理器1080是PC的控制中心,利用各种接口和线路连接整个PC的各个部分,通过运行或执行存储在存储器1020内的软件程序和/或模块,以及调用存储在存储器1020内的数据,执行PC的各种功能和处理数据,从而对PC进行整体监控。可选的,处理器1080可包括一个或多个处理单元;优选的,处理器1080可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。\n可以理解的是,上述调制解调处理器也可以不集成到处理器1080中。\n[0239] PC还包括给各个部件供电的电源1090(比如电池),优选的,电源可以通过电源管理系统与处理器1080逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。\n[0240] 尽管未示出,PC还可以包括摄像头、蓝牙模块等,在此不再赘述。\n[0241] 在本发明实施例中,该终端所包括的处理器1080还具有以下功能:\n[0242] 确定待检测的应用程序安装包;\n[0243] 反编译所述应用程序安装包,并获取经过反编译后的得到的所述应用程序安装包的目标函数列表,所述目标函数列表中携带所述应用程序安装包逻辑地址;\n[0244] 向服务器发送所述目标函数列表,以使所述服务器根据所述目标函数列表确定所述应用程序安装包的变更内容,并获取所述应用程序安装包的检测结果。\n[0245] 请参阅图21,图21为本发明实施例中应用程序安装包的检测系统一个实施例示意图。应用程序安装包的检测系统,包括:服务器1101以及客户端1102;\n[0246] 本实施例中,客户端1102确定待检测的应用程序安装包,客户端1102反编译应用程序安装包,并获取经过反编译后的得到的应用程序安装包的目标函数列表,目标函数列表中携带应用程序安装包逻辑地址,服务器1101接收客户端1102发送的待检测的应用程序安装包的目标函数列表,目标函数列表中携带应用程序安装包逻辑地址,服务器1101根据目标函数列表中携带的逻辑地址,判断是否存在地址偏移量,若是,则根据地址偏移量确定应用程序安装包的变更内容,若变更内容记录在应用程序安装包的预设检测内容中,则服务器1101根据应用程序安装包的变更内容以及应用程序安装包的预设检测内容,获取应用程序安装包的检测结果。\n[0247] 本发明实施例中,提供了一种应用程序安装包的检测系统,可以在确定目标函数列表中存在地址偏移量后,可以逆推出应用程序安装包存在的变更内容,供测试人员对存在的变更内容进行有针对性的测试,无需反复全功能跑测,不但提升了变更内容的覆盖率,同时也减少了人力成本,从而提升了检测效率。\n[0248] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。\n[0249] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。\n[0250] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。\n[0251] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。\n[0252] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文全称:Read-Only Memory,英文缩写:ROM)、随机存取存储器(英文全称:Random Access Memory,英文缩写:\nRAM)、磁碟或者光盘等各种可以存储程序代码的介质。\n[0253] 以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
法律信息
- 2018-05-22
- 2017-02-01
实质审查的生效
IPC(主分类): G06F 11/36
专利申请号: 201610617675.X
申请日: 2016.07.29
- 2017-01-04
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有引用任何外部专利数据! |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |