发明内容
针对现有技术中的问题,本发明实施例提供一种应用程序的关联性确定方法、装置、设备、介质和程序。
具体地,本发明实施例提供了以下技术方案:
第一方面,本发明实施例提供了一种应用程序的关联性确定方法,包括:
根据多个应用程序的安装包,分别获取各个所述应用程序对至少一个第三方软件开发工具包SDK的调用信息,以及各个所述SDK在各个所述应用程序中的行为数据;
基于各个所述应用程序对所述至少一个SDK的调用信息,以及各个所述SDK在各个所述应用程序中的行为数据,确定各个所述应用程序之间的关联性。
进一步地,所述分别获取各个所述应用程序对至少一个第三方软件开发工具包SDK的调用信息,以及各个所述SDK在各个所述应用程序中的行为数据,包括:
对各个所述应用程序的安装包进行反编译处理,得到各个所述应用程序的源代码,并根据预设规则分别获取各个所述应用程序的源代码中对所述至少一个SDK的调用数据以及各个所述SDK在各个所述应用程序中的行为数据;和/或,
通过动态沙箱运行各个所述应用程序,分别获取各个所述应用程序对所述至少一个SDK的调用数据以及各个所述SDK在各个所述应用程序中的行为数据。
进一步地,所述基于各个所述应用程序对所述至少一个SDK的调用信息,以及各个所述SDK在各个所述应用程序中的行为数据,确定各个所述应用程序之间的关联性,包括
构建各个所述应用程序对应的第一数据节点;
基于各个所述应用程序对所述至少一个SDK的调用信息,构建各个所述SDK对应的第二数据节点,并建立各个所述第一数据节点和各个所述第二数据节点之间的关联关系;
基于各个所述SDK在各个所述应用程序中的行为数据,构建各个所述SDK在各个所述应用程序中对应的第三数据节点,并建立各个所述第二数据节点和各个所述第三数据节点之间的关联关系;
基于各个所述第一数据节点和各个所述第二数据节点之间的关联关系,以及各个所述第二数据节点和各个所述第三数据节点之间的关联关系,确定各个所述应用程序之间的关联性。
进一步地,所述确定各个所述应用程序之间的关联性,包括:
通过知识图谱对各个所述第一数据节点和各个所述第二数据节点之间的关联关系,以及各个所述第二数据节点和各个所述第三数据节点之间的关联关系进行表示;所述知识图谱包括:各个所述第一数据节点、所述第二数据节点以及所述第三数据节点,以及连接关系,所述连接关系用于表示所述关联关系;
根据所述知识图谱,确定各个所述应用程序之间的关联性。
进一步地,所述方法还包括:
获取各个所述应用程序的属性信息;
基于各个所述应用程序的属性信息,构建各个所述应用程序的属性信息对应的第四数据节点,并建立各个所述第一数据节点以及各个所述第四数据节点之间的关联关系;
将所述第四数据节点加入所述知识图谱中。
进一步地,所述方法还包括:
以第一目标数据节点作为起始节点,在所述知识图谱中查询与所述目标数据节点具有关联关系的第二目标数据节点,所述第一目标数据节点对应的第一目标应用程序为所述多个应用程序中的任一应用程序;
将所述第二目标数据节点对应的应用程序作为与所述第一目标应用程序具有关联关系的应用程序。
进一步地,所述方法还包括:
基于所述知识图谱,确定各个所述应用程序中任意两个应用程序之间的关联关系。
进一步地,所述分别获取各个所述应用程序对至少一个第三方软件开发工具包SDK的调用信息,以及各个所述SDK在各个所述应用程序中的行为数据之前,还包括
对各个所述应用程序的安装包进行脱壳处理。
进一步地,所述构建各个所述SDK在各个所述应用程序中对应的第三数据节点之前,还包括:
按照标签类型对各个所述SDK在各个所述应用程序中的行为数据进行分类。
第二方面,本发明实施例还提供了一种应用程序的关联性确定装置,包括:
获取模块,用于根据多个应用程序的安装包,分别获取各个所述应用程序对至少一个第三方软件开发工具包SDK的调用信息,以及各个所述SDK在各个所述应用程序中的行为数据;
处理模块,用于基于各个所述应用程序对所述至少一个SDK的调用信息,以及各个所述SDK在各个所述应用程序中的行为数据,确定各个所述应用程序之间的关联性。
第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述应用程序的关联性确定方法的步骤。
第四方面,本发明实施例还提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述应用程序的关联性确定方法的步骤。
第五方面,本发明实施例还提供了一种计算机程序产品,其上存储有可执行指令,该指令被处理器执行时使处理器实现第一方面所述应用程序的关联性确定方法的步骤。
本发明实施例提供的应用程序的关联性确定方法、装置、设备、介质和程序,获取多个应用程序对至少一个第三方包SDK的调用信息,以及SDK在各个应用程序中的行为数据;基于各个应用程序对SDK的调用信息,以及各个SDK在各个应用程序中的行为数据,能够方便快速地确定各个应用程序之间的关联性,因此确定应用程序的关联性的效率较高。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
首先,对本发明实施例的名词以及应用场景进行介绍:
脱壳:在一些计算机软件里有一段专门负责保护软件不被非法修改或反编译的程序。它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,大家就把这样的程序称为“壳”。加壳是作者写完软件后,为了保护自己的代码或维护软件产权等利益所常用到的手段。脱壳即去掉软件所加的壳。
知识图谱,是结构化的语义知识库,用于以符号形式描述物理世界中的概念及其相互关系,其基本组成单位是“实体—关系—实体”三元组,以及实体及其相关属性—值对,实体间通过关系相互联结,构成网状的知识结构。
本发明实施例的方法可以应用于对应用程序的关联性进行分析的场景中,例如,用户在搜索引擎上搜索了一条商品信息之后,会有好多个电商APP向用户推送相关商品信息,这些APP之间是怎样联系在一起的,因此本发明实施例对此进行了分析研究。例如,分析各个APP之间是否是同一组织所拥有,境外服务器是否向应用程序收集个人信息等各个APP之间多维度的关联,从而更好的发现问题,对不合规应用程序进行整改,保护好用户的个人信息,提高用户的个人信息的安全性。
本发明实施例的应用程序的关联性确定方法,通过各个应用程序对第三方软件开发工具包(Software Development Kit,SDK)的调用信息,以及SDK在应用程序中的行为数据等,分析各个应用程序之间的关联性,提高了用户信息的安全性。
下面的实施例均以电子设备为执行主体进行说明。下面结合图1-图5以具体的实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图1是本发明实施例提供的应用程序的关联性确定方法一实施例的流程示意图。如图1所示,本发明实施例提供的方法,包括:
步骤101、根据多个应用程序的安装包,分别获取各个应用程序对至少一个第三方软件开发工具包SDK的调用信息,以及各个SDK在各个应用程序中的行为数据;
具体的,可以利用互联网进行网络资源获取到应用程序安装包,对多个应用程序的安装包进行分析并进行数据提取,获取各个应用程序对第三方SDK的调用信息,例如,应用程序1调用了1个SDK,应用程序2与应用程序1调用了相同的SDK。
进一步,可以分别获取各个SDK在每个应用程序中的行为数据,其中行为数据例如包括获取用户信息的行为数据,例如应用程序1通过调用SDK,获取用户的手机号,应用程序2调用该SDK也获取了用户的手机号,则两个应用程序之间具有关联性。
可选地,可以通过对应用程序的安装包进行静态代码扫描,和/或,对应用程序进行动态运行获取上述调用信息以及行为数据。
步骤102、基于各个应用程序对至少一个SDK的调用信息,以及各个SDK在各个应用程序中的行为数据,确定各个应用程序之间的关联性。
具体的,基于各个应用程序对至少一个SDK的调用信息,以及各个SDK在各个应用程序中的行为数据,可以建立各个应用程序之间的关联关系,进而确定出各个应用程序之间的关联性。假设多个应用程序对相同的SDK进行调用,则多个应用程序之间具有关联性,若某个SDK在某些应用程序中的行为数据相同,则多个应用程序之间具有关联性。
例如,如图2所示,应用程序APP1具有收集MAC地址等行为,嵌入第三方SDK1,且该第三方SDK1收集了用户的联系方式,嵌入第三方SDK2,且该第三方SDK2收集了用户的位置信息;
APP2嵌入第三方SDK2,且该第三方SDK2收集了用户的位置信息;
APP3嵌入第三方SDK1,且该第三方SDK1收集了用户的联系方式;
那么APP1和APP2有了关联关系,APP1和APP3有了关联关系。通过APP1——SDK2——APP2,APP1——SDK1——APP3。
若某些APP之间通过调用某个SDK收集用户信息,并将用户信息发给可疑用户,则可以认为该些APP不合规,对该些APP进行整改,提高了用户信息的安全性。
本实施例的方法,获取多个应用程序对至少一个第三方包SDK的调用信息,以及SDK在各个应用程序中的行为数据;基于各个应用程序对SDK的调用信息,以及各个SDK在各个应用程序中的行为数据,能够方便快速地确定各个应用程序之间的关联性,因此确定应用程序的关联性的效率较高。
在一实施例中,步骤101之前还可以进行如下操作:
对各个应用程序的安装包进行脱壳处理。
具体的,在进行数据提取之前可以进行脱壳处理,进而可以基于脱壳处理后的应用程序,获取对SDK的调用信息,以及行为数据。例如,对脱壳处理后的程序进行静态代码扫描,和/或,通过动态运行方式,获取应用程序对SDK的调用信息以及行为数据,例如包括获取用户信息等。
在一实施例中,步骤101可以通过如下方式实现:
对各个应用程序的安装包进行反编译处理,得到各个应用程序的源代码,并根据预设规则分别获取各个应用程序的源代码中对至少一个SDK的调用信息以及各个SDK在各个应用程序中的行为数据;和/或,
通过动态沙箱运行各个所述应用程序,获取各个所述应用程序对所述至少一个SDK的调用信息以及各个所述SDK在各个所述应用程序中的行为数据
具体的,通过反编译处理解析应用程序的源代码,根据预设规则获取应用程序源代码中数据,例如检查应用程序的配置和逻辑代码片段,确定该应用程序是否嵌入第三方SDK,以及对应用程序的证书、权限等进行检查,或进行IP扫描等;上述过程主要是分析代码中包含的行为特征信息。
动态沙箱运行应用程序,例如通过模拟器安装应用程序,并模拟用户点击去触发应用程序中某些功能,获取上述调用信息以及行为数据,例如监控上传下载和获取权限的行为数据等。
可选地,可以将上述两部分得到的数据进行整理,对数据进行合并、去重等处理。
上述实施方式中,通过上述两种方式获取对SDK的调用信息,以及SDK的行为数据,实现方式简单,灵活性较大,而且获取的数据更加全面。
在一实施例中,可以将数据进行归一化处理,得到统一的数据格式,方便后续处理,步骤102可以通过如下方式实现:
构建各个应用程序对应的第一数据节点;
基于各个应用程序对所述至少一个SDK的调用信息,构建各个SDK对应的第二数据节点,并建立各个第一数据节点和各个第二数据节点之间的关联关系;
基于各个SDK在各个应用程序中的行为数据,构建各个SDK在各个应用程序中对应的第三数据节点,并建立各个第二数据节点和各个第三数据节点之间的关联关系;
基于各个第一数据节点和各个第二数据节点之间的关联关系,以及各个第二数据节点和各个第三数据节点之间的关联关系,确定各个应用程序之间的关联性。
可选地,第一数据节点、第二数据节点和第三数据节点具有相同的数据结构。
进一步,可以以数据结构存储在数据库中,数据结构的信息包括:名称、属性、数据内容等。)
具体的,在构建数据节点之后,可以基于不同的应用程序对应的各个第一数据节点之间的关联关系,确定多个应用程序之间的关联性,例如,应用程序A和B有关系,C和D有关系,D和B有关联关系,这时A和D和C就有了关联关系。
具体可以是基于各个第一数据节点和调用的SDK对应的第二数据节点之间的关联关系,以及调用的SDK对应的第二数据节点和SDK在应用程序中的行为数据对应的第三数据节点之间的关联关系,确定多个应用程序之间的关联性。
应用程序可以看作是一个数据节点,获取用户信息(例如联系方式等)的行为数据也可以看作一个数据节点,调用的SDK也可以看作一个数据节点。为了便于处理,每个数据节点都具有相同的数据结构。
例如,如图3所示,APP1(数据节点A)具有收集MAC地址等行为数据(数据节点D)和调用第三方SDK2(数据节点E),且SDK2收集用户位置信息(数据节点F);
APP2(数据节点B)具有收集用户信息(例如国际移动设备识别码(InternationalMobile Equipment Identity,IMEI))(数据节点H)和调用第三方SDK2(数据节点E)且SDK2收集了用户位置信息(数据节点F);
APP3(数据节点C)具有收集MAC地址等行为数据(数据节点D),和调用第三方SDK1(数据节点G)且SDK1触发收集了用户联系方式(数据节点K)。
那么应用程序A和应用程序B就有了关联关系,通过A——E——B,E——F表示,也可以通过关联关系
表示应用程序A和应用程序B的关联。
如果从数据节点E出发,就可以直接找到和E关联的所有数据节点E——A,E——B,E——F,G——K。
可选地,在构建第二数据节点或第三数据节点之前,可以按照标签类型进行分类,并基于分类后的数据构建第二数据节点或第三数据节点。
对于第二数据节点来说,可以是不同的SDK进行分类,相同的SDK只建立一个第二数据节点。
对于第三数据节点来说,可以是不同的行为数据进行分类,相同的行为数据只建立一个第三数据节点,例如收集用户联系方式对应一个第三数据节点,收集用户位置信息对应一个第三数据节点。
可选地,可以将数据节点以及关联关系存储在数据库中,对于一个新的数据节点的加入比较方便,只需要知道当前的数据节点和那些数据节点有关系就可以直接入库。
上述实施方式中,可以将应用程序、对SDK的调用信息、行为数据等作为数据节点,并建立各个数据节点之间的关联关系,从而能够更加高效地确定各个应用程序之间的关联性。
在一实施例中,“确定各个应用程序之间的关联性”可以通过如下方式实现:
通过知识图谱对各个第一数据节点和各个第二数据节点之间的关联关系,以及各个第二数据节点和各个第三数据节点之间的关联关系进行表示;知识图谱包括:各个所述第一数据节点、第二数据节点以及第三数据节点,以及连接关系,连接关系用于表示关联关系;
根据知识图谱,确定各个应用程序之间的关联性。
具体的,通过知识图谱,对各个第一数据节点和第二数据节点之间的关联关系,各个第二数据节点和第三数据节点之间的关联关系进行表示,如图3所示,图3中数据节点之间的连接关系表示数据节点之间的关联关系。
进而,基于知识图谱可以方便、快速的确定各个应用程序之间的关联性。
上述实施方式中,通过知识图谱表示各个数据节点,以及各个数据节点之间的关联关系,从而能够更加直观、高效地确定各个应用程序之间的关联性。
在一实施例中,该方法还包括:
获取各个应用程序的属性信息;
基于各个应用程序的属性信息,构建各个应用程序的属性信息对应的第四数据节点,并建立各个第一数据节点以及各个第四数据节点之间的关联关系;
将第四数据节点加入知识图谱中。
具体的,属性信息例如包括:应用程序的开发者信息、应用程序的证书信息、收集MAC地址、系统版本等行为信息。
如图3所示,图3中第四数据节点D、H、M、N等表示应用程序的属性信息。可选地,各个第一数据节点以及各个第四数据节点之间的关联关系,也能表示各个应用程序之间的某种关联性。
在一实施例中,该方法还包括:
以第一目标数据节点作为起始节点,在知识图谱中查询与目标数据节点具有关联关系的第二目标数据节点,第一目标数据节点对应的第一目标应用程序为多个应用程序中的任一应用程序;
将第二目标数据节点对应的应用程序作为与第一目标应用程序具有关联关系的应用程序。
具体的,可以通过知识图谱,对应用程序之间的关系进行展示,进而基于知识图谱中一个第一目标数据节点作为起始节点出发,可以找到和它具有关联的其他数据节点,并确定出与该第一目标数据节点对应的第一目标应用程序具有关联关系的应用程序。
如图4所示,通过应用程序的属性信息(例如开发者信息)的数据节点关联多个应用程序的数据节点,APP1、APP2和APP3。
通过第三方SDK1的数据节点,关联APP2和APP3。
通过第三方SDK2的数据节点,关联APP1和APP3。
在另一实施例中,该方法还包括:
基于知识图谱,确定各个应用程序中任意两个应用程序之间的关联关系。
具体的,可以通过给出的两个应用程序,在知识图谱中查询对应的数据节点A、B,拟合两者之间存在的关系,具体就是从数据节点A、B同时出发,查询两者之间的最短关系,从而确定出两个应用程序之间的关联关系。
上述实施方式中,基于知识图谱,可以直观、有效地找到应用程序彼此之间各个维度的关系,而且可以对应用程序进行动态探知,即可以以某个应用程序为出发点确定与其他应用程序之间的关联关系,以及可以对两个应用程序之间的关系进行动态探知。
下面对本发明提供的应用程序的关联性确定装置进行描述,下文描述的应用程序的关联性确定装置与上文描述的应用程序的关联性确定方法可相互对应参照。
图5是本发明提供的应用程序的关联性确定装置一实施例的结构示意图。如图5所示,本实施例提供的应用程序的关联性确定装置,包括:
获取模块210,用于根据多个应用程序的安装包,分别获取各个所述应用程序对至少一个第三方软件开发工具包SDK的调用信息,以及各个所述SDK在各个所述应用程序中的行为数据;
处理模块220,用于基于各个所述应用程序对所述至少一个SDK的调用信息,以及各个所述SDK在各个所述应用程序中的行为数据,确定各个所述应用程序之间的关联性。
可选地,所述获取模块210,具体用于:
对各个所述应用程序的安装包进行反编译处理,得到各个所述应用程序的源代码,并根据预设规则分别获取各个所述应用程序的源代码中对所述至少一个SDK的调用数据以及各个所述SDK在各个所述应用程序中的行为数据;和/或,
通过动态沙箱运行各个所述应用程序,分别获取各个所述应用程序对所述至少一个SDK的调用数据以及各个所述SDK在各个所述应用程序中的行为数据。
可选地,所述处理模块220,具体用于:
构建各个所述应用程序对应的第一数据节点;
基于各个所述应用程序对所述至少一个SDK的调用信息,构建各个所述SDK对应的第二数据节点,并建立各个所述第一数据节点和各个所述第二数据节点之间的关联关系;
基于各个所述SDK在各个所述应用程序中的行为数据,构建各个所述SDK在各个所述应用程序中对应的第三数据节点,并建立各个所述第二数据节点和各个所述第三数据节点之间的关联关系;
基于各个所述第一数据节点和各个所述第二数据节点之间的关联关系,以及各个所述第二数据节点和各个所述第三数据节点之间的关联关系,确定各个所述应用程序之间的关联性。
可选地,所述处理模块220,具体用于:
通过知识图谱对各个所述第一数据节点和各个所述第二数据节点之间的关联关系,以及各个所述第二数据节点和各个所述第三数据节点之间的关联关系进行表示;所述知识图谱包括:各个所述第一数据节点、所述第二数据节点以及所述第三数据节点,以及连接关系,所述连接关系用于表示所述关联关系;
根据所述知识图谱,确定各个所述应用程序之间的关联性。
可选地,所述处理模块220,还用于:
获取各个所述应用程序的属性信息;
基于各个所述应用程序的属性信息,构建各个所述应用程序的属性信息对应的第四数据节点,并建立各个所述第一数据节点以及各个所述第四数据节点之间的关联关系;
将所述第四数据节点加入所述知识图谱中。
可选地,所述处理模块220,还用于:
以第一目标数据节点作为起始节点,在所述知识图谱中查询与所述目标数据节点具有关联关系的第二目标数据节点,所述第一目标数据节点对应的第一目标应用程序为所述多个应用程序中的任一应用程序;
将所述第二目标数据节点对应的应用程序作为与所述第一目标应用程序具有关联关系的应用程序。
可选地,所述处理模块220,还用于:
基于所述知识图谱,确定各个所述应用程序中任意两个应用程序之间的关联关系。
可选地,所述处理模块220,还用于:
对各个所述应用程序的安装包进行脱壳处理。
可选地,所述处理模块220,还用于:
按照标签类型对各个所述SDK在各个所述应用程序中的行为数据进行分类。
本发明实施例的装置,其用于执行前述任一方法实施例中的方法,其实现原理和技术效果类似,此次不再赘述。
举个例子如下:
图6示例了一种电子设备的实体结构示意图,如图6所示,该电子设备可以包括:处理器(processor)810、通信接口(Communications Interface)820、存储器(memory)830和通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。处理器810可以调用存储器830中的逻辑指令,以执行如下方法,包括:根据多个应用程序的安装包,分别获取各个所述应用程序对至少一个第三方软件开发工具包SDK的调用信息,以及各个所述SDK在各个所述应用程序中的行为数据;基于各个所述应用程序对所述至少一个SDK的调用信息,以及各个所述SDK在各个所述应用程序中的行为数据,确定各个所述应用程序之间的关联性。
此外,上述的存储器830中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的应用程序的关联性确定方法包括:根据多个应用程序的安装包,分别获取各个所述应用程序对至少一个第三方软件开发工具包SDK的调用信息,以及各个所述SDK在各个所述应用程序中的行为数据;基于各个所述应用程序对所述至少一个SDK的调用信息,以及各个所述SDK在各个所述应用程序中的行为数据,确定各个所述应用程序之间的关联性。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。