首页> 中国专利> 基于第三方库的第三方流量识别方法、装置及设备

基于第三方库的第三方流量识别方法、装置及设备

摘要

本公开提供一种基于第三方库的第三方流量识别方法、装置及设备,获取目标应用的特征信息,根据目标应用的特征信息和预先获取的第三方库的特征信息,确定目标应用中的第三方模块,获取目标应用的流量调用路径信息和第三方模块的路径信息,根据流量调用路径信息和第三方模块的路径信息,确定目标应用的流量中的第三方模块流量和自有模块流量,将第三方模块流量作为第三方流量。本公开能够在不依赖第三方库白名单以及应用混淆的前提下识别应用中的第三方流量。

著录项

说明书

技术领域

本公开涉及计算机通信技术领域,尤其涉及一种基于第三方库的第三方流量识别方法、装置及设备。

背景技术

移动互联网产业快速发展,为了方便开发,在移动应用软件开发的过程中大量使用了第三方库。举例来说,开发者要开发一个应用软件,例如在Linux上开发安卓系统的app,可以认为第一方库就是Google提供的库,第二方库是开发者编写的基础库,第三方库是开发者以外的其他公司提供的基础库或者其他公司发布的开源库。

第三方库的安全性是不容易保证的,有害和不稳定的第三方库的传播也会损害移动生态系统,如果应用中普遍存在大量调用第三方库的情况,就容易导致各种安全问题,影响移动互联网行业的健康发展。所以,识别应用中的第三方流量是有必要的,但是,相关技术中缺乏准确识别应用中的第三方流量的技术。

发明内容

有鉴于此,本公开的目的在于提出一种基于第三方库的第三方流量识别方法、装置及设备。

基于上述目的,本公开提供了一种基于第三方库的第三方流量识别方法,包括:

获取目标应用的特征信息;

根据所述目标应用的特征信息和预先获取的第三方库的特征信息,确定所述目标应用中的第三方模块;

获取所述目标应用的流量调用路径信息和所述第三方模块的路径信息;

根据所述流量调用路径信息和所述第三方模块的路径信息,确定所述目标应用的流量中的第三方模块流量和自有模块流量,将所述第三方模块流量作为第三方流量。

基于同一发明构思,本公开提供了一种基于第三方库的第三方流量识别装置,包括:

特征信息获取模块,用于获取目标应用的特征信息;

第三方模块确定模块,用于根据所述目标应用的特征信息和预先获取的第三方库的特征信息,确定所述目标应用中的第三方模块;

路径信息获取模块,用于获取所述目标应用的流量调用路径信息和所述第三方模块的路径信息;

第三方流量确定模块,用于根据所述流量调用路径信息和所述第三方模块的路径信息,确定所述目标应用的流量中的第三方模块流量和自有模块流量,将所述第三方模块流量作为第三方流量。

基于同一发明构思,本公开提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述的方法。

从上面所述可以看出,本公开提供的基于第三方库的第三方流量识别方法、装置及设备,获取目标应用的特征信息,根据目标应用的特征信息和预先获取的第三方库的特征信息,确定目标应用中的第三方模块,获取目标应用的流量调用路径信息和第三方模块的路径信息,根据流量调用路径信息和第三方模块的路径信息,确定目标应用的流量中的第三方模块流量和自有模块流量,将第三方模块流量作为第三方流量。本公开能够在不依赖第三方库白名单以及应用混淆的前提下识别应用中的第三方流量。

附图说明

为了更清楚地说明本公开或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本公开实施例提供的基于第三方库的第三方流量识别方法的应用场景示意图;

图2为本公开实施例提供的基于第三方库的第三方流量识别方法的一种流程示意图;

图3为本公开实施例提供的基于第三方库的第三方流量识别方法的一种更为具体的流程示意图;

图4为本公开实施例提供的基于第三方库的第三方流量识别装置的一种结构示意图;

图5为本公开实施例提供的一种更为具体的电子设备硬件结构示意图。

具体实施方式

为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。

需要说明的是,除非另外定义,本公开实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。

移动互联网产业快速发展,为了方便开发,在移动应用软件开发的过程中大量使用了第三方库。举例来说,开发者要开发一个应用软件,例如在Linux上开发安卓系统的app,可以认为第一方库就是Google提供的库,第二方库是开发者编写的基础库,第三方库是开发者以外的其他公司提供的基础库或者其他公司发布的开源库。

第三方库的安全性是不容易保证的,有害和不稳定的第三方库的传播也会损害移动生态系统,如果应用中普遍存在大量调用第三方库的情况,就容易导致各种安全问题,影响移动互联网行业的健康发展。所以,识别应用中的第三方流量是有必要的。

相关技术中,大部分集中在从应用中识别第三方库上,主要包含以下方法:第一种是基于已知库的白名单。另一种方法是从应用程序中直接提取库,这种方式不需要事先了解第三方库,通过分析大量应用的源代码,其中第三方库代码由于被多数应用调用,会有较高的重复率,据此识别应用中的第三方模块。对于网络接入资源的区分即识别应用中自有流量和第三方流量,相关技术中,基于已知库的白名单,获取上述库的流量作为第三方流量。

然而,基于白名单的方式无法抵抗应用混淆的影响,应用中第三方库的名字因混淆已经被变换,无法据此来锁定应用使用了白名单中的那些第三方库。通过分析应用程序源代码获取第三方库的方法,在检测和分类第三方库时严重依赖于Java包名和包结构,但是,包的名称大部分都收到了应用混淆的影响,并且包的结构可能在同一个库的不同版本中有所不同,这对得到结果的准确性有很大影响。

为了在不依赖第三方库白名单以及应用混淆的前提下识别应用中的第三方流量。本公开提出获取目标应用的特征信息,根据目标应用的特征信息和预先获取的第三方库的特征信息,确定目标应用中的第三方模块,获取目标应用的流量调用路径信息和第三方模块的路径信息,根据流量调用路径信息和第三方模块的路径信息,确定目标应用的流量中的第三方模块流量和自有模块流量,将第三方模块流量作为第三方流量。

参考图1,其为本申请实施例提供的基于第三方库的第三方流量识别方法的应用场景示意图。该应用场景包括终端设备101、服务器102、和数据存储系统103。其中,终端设备101、服务器102以及数据存储系统103之间均可通过有线或无线的通信网络连接。终端设备101包括但不限于桌面计算机、移动电话、移动电脑、平板电脑、媒体播放器、智能可穿戴设备视、个人数字助理(personal digital assistant,PDA)或其它能够实现上述功能的电子设备等。服务器102和数据存储系统103均可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。

服务器102用于向终端设备101的用户提供第三方流量识别服务,终端设备101中安装有与服务器102通信的客户端,用户可通过该客户端输入待检测应用,点击检测按钮后,客户端将待检测应用发送给服务器102,服务器102将待检测应用输入已训练的第三方流量识别模型,获得第三方流量识别模型输出的待检测应用对应的第三方流量识别结果,将第三方流量识别结果发送给客户端,客户端向用户展示第三方流量识别结果,以帮助用户进行第三方流量的识别。

数据存储系统103中存储有大量训练数据,每个训练数据包括一个待检测应用和该待检测应用对应的第三方流量识别结果,服务器102可基于大量训练数据对第三方流量识别模型进行训练,使得第三方流量识别模型能够对输入的待检测应用进行第三方流量识别,训练数据的来源包括但不限于已有的数据库、从互联网爬取的数据或者在用户使用客户端时上传的数据。当第三方流量识别模型输出的准确率达到一定要求时,服务器102可基于第三方流量识别模型向用户提供第三方流量识别服务,同时,服务器102还可以基于新增的训练数据不断优化第三方流量识别模型。

本申请实施例的第三方流量识别模型可应用于不同种类的应用软件的场景。可基于不同种类的应用软件的训练数据分别对第三方流量识别模型进行训练,以获得应用于不同种类的应用软件的第三方流量识别模型。

下面结合图1的应用场景,来描述根据本申请示例性实施方式的第三方流量识别模型的训练方法以及第三方流量识别方法。需要注意的是,上述应用场景仅是为了便于理解本申请的精神和原理而示出,本申请的实施方式在此方面不受任何限制。相反,本申请的实施方式可以应用于适用的任何场景。

以下,通过具体的实施例进一步详细说明本公开的技术方案。

图2为本公开实施例提供的基于第三方库的第三方流量识别方法的一种流程示意图;基于第三方库的第三方流量识别方法,包括:

S210、获取目标应用的特征信息。

在一些实施例中,S210具体包括:

获取所述目标应用的应用程序包;

利用Soot工具将所述应用程序包转化为Jimple语句,以得到所述目标应用的特征信息。

其中,Soot是一种字节码分析工具。Jimple是一种紧凑、无栈和类型化的三地址代码中间表示法。

Soot的输入是多源的,可以是Java的字节码。Soot提供了四个中间表示法,分别为Baf,Grimp,Jimple和Shimple,以将源文件转换为中间表示。Soot能直接创建Jimple码,也可由Java sourcecode或者bytecode转化翻译而来。bytecode会被翻译成untyped Jimple,再通过type inference 方法对局部变量加上类型。翻译的重要一步是对表达式作线性化使得每个statement只能最多reference 3个局部变量或者常量。相对于bytecode的200多种指令,Jimple的指令类型要少得多,分别对应着核心指令的 NopStmt, IdentityStmt,AssignStmt;函数内控制流指令的IfStmt, GotoStmt, TableSwitchStmt和LookUpSwitchStmt,函数间控制流的InvoeStmt, ReturnStmt, ReturnVoidStmt, 监视器指令EnterMonitorStmt和ExitMonitorStmt,最后处理异常ThrowStmt和退出的RetStmt。

作为一个示例,该目标应用的应用程序包可以为Java包。Soot工具读入Java包,然后将Java包中的Java字节码转换为的Jimple语句。

对于每个目标应用,将该目标应用的应用程序包(如Java包)中函数的数量和每个函数对应的各类型Jimple语句的数量作为该目标应用的特征,将该目标应用的特征组合为一个list数组,作为该目标应用的特征信息。其中,Jimple语句的类型包括:核心指令的NopStmt, IdentityStmt, AssignStmt;函数内控制流指令的IfStmt, GotoStmt,TableSwitchStmt和LookUpSwitchStmt,函数间控制流的InvoeStmt, ReturnStmt,ReturnVoidStmt, 监视器指令EnterMonitorStmt和ExitMonitorStmt,最后处理异常ThrowStmt和退出的RetStmt。

Jimple的特点是结构清晰,其指令类型相比其他语句要少得多,一般仅有15种,更适用于程序分析和代码优化。发明人发现,在应用混淆的场景下,因为Jimple语句指令类型少,机构清晰,所以将该目标应用的应用程序包(如Java包)中函数的数量和每个函数对应的各类型Jimple语句的数量作为该目标应用的特征较为准确和稳定。

该目标应用的应用程序包(如Java包)中函数的数量和每个函数对应的各类型Jimple语句的数量作为该目标应用的特征,将该目标应用的特征组合为一个list数组,作为该目标应用的特征信息进行分析,能够有效抵抗应用混淆的影响。

S220、根据目标应用的特征信息和预先获取的第三方库的特征信息,确定目标应用中的第三方模块。

目标应用中包含多个模块。

在一些实施例中,还包括:

获取所述第三方库;

利用Soot工具将所述第三方库转化为Jimple语句,以得到所述第三方库的特征信息。

获取第三方库的特征信息的方法与获取目标应用的特征信息的方法是类似的。在一些实施例中,预先获取多个第三方库的特征信息。在一些实施例中,获取的第三方库为原始第三方库。相关技术中,在检测和分类第三方库时严重依赖于数据包名和包结构,但是,包的名称大部分都收到了应用混淆的影响,并且包的结构可能在同一个库的不同版本中有所不同,这对得到结果的准确性有很大影响。本公开获取的第三方库为原始第三方库,能够初步避免受到包名和包结构变化的影响,提高识别的准确性。

在一些实施例中,S220具体包括:

对于所述目标应用中的每一个所述模块,

响应于确定该模块对应的所述目标应用的特征信息与所述第三方库的特征信息的匹配度高于预设的匹配度阈值,将该模块作为所述第三方模块。

在一些实施例中,对于每个第三方库的特征信息A和每个模块对应的目标应用的特征信息B,运算公式为:

L(A,B) = (A∩B) / A

其中,L为A与B之间的匹配度。L的值越接近1则表示目标应用中调用了该第三方库,为了更好的确定第三方库的调用情况,优选的,当L的值大于0.7时判定目标应用中调用了该第三方库的效果较好。

在一些实施例中,对于目标应用中的每个模块,将该模块的特征组合为一个list数组,作为该模块对应的目标应用的特征信息。

在一些实施例中,响应于确定该模块对应的所述目标应用的特征信息与所述第三方库的特征信息的匹配度不高于预设的匹配度阈值,将该模块作为自有模块。

S230、获取目标应用的流量调用路径信息和第三方模块的路径信息。

在一些实施例中,S230具体包括:

利用Xposed工具获取所述目标应用中的流量信息,并打印函数调用栈,以得到所述流量调用路径信息。

其中,Xposed框架是一款开源框架,其功能是可以在不修改APK的情况下影响程序运行(修改系统)的框架服务。Xposed的主要作用是hook应用中发出http请求的函数,动态劫持函数的运行,得到具体的URL信息。

使用Xposed来hook目标应用的运行时流量。

其中,安卓应用中的流量发出方式基本采用如下四种方式:

HttpURLConnection,是适用于大多数应用程序的通用轻量级的HTTP客户端,这个阶段发展较为稳重缓慢,但是它的重点API能使我们能够轻松地改进;Okhttp,是一个高效的Http客户端,支持HTTP2/SPDY黑科技,socket自动选择最好路线,并支持自动重连,拥有自动维护的socket连接池,减少握手次数,拥有队列线程池,轻松写并发,拥有Interceptors轻松处理请求与响应(比如透明GZIP压缩,LOGGING),基于Headers的缓存策略;HttpClient,是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包;Volley,是在2013年Google I/O大会上推出来一个网络通信框架,Volley除了“简单易用”之外,在性能方面也比较出色,它的设计目标:去处理数据量不大,但通信频繁的网络操作。

分别针对目标应用发出流量的四种方式,即HttpUrlConnection、HttpClient、okHttp和Volley四种方式分别寻找待hook函数进行hook,同时获取函数调用栈信息。在目标应用运行期间将hook到的流量及函数调用栈信息通过http通信的方式发送到服务器端进行存储,以便后续分析。

当发生函数调用的时候,栈空间中存放的数据是这样的:

调用者函数把被调函数所需要的参数按照与被调函数的形参顺序相反的顺序压入栈中,即:从右向左依次把被调函数所需要的参数压入栈;

调用者函数使用call指令调用被调函数,并把call指令的下一条指令的地址当成返回地址压入栈中(这个压栈操作隐含在call指令中);

在被调函数中,被调函数会先保存调用者函数的栈底地址(push ebp),然后再保存调用者函数的栈顶地址,即:当前被调函数的栈底地址(mov ebp,esp);

在被调函数中,从ebp的位置处开始存放被调函数中的局部变量和临时变量,并且这些变量的地址按照定义时的顺序依次减小,即:这些变量的地址是按照栈的延伸方向排列的,先定义的变量先入栈,后定义的变量后入栈。

本公开通过打印函数调用栈信息,能准确掌握流量的调用路径,故能够准确的将获取到的流量信息进行分类。

S240、根据流量调用路径信息和第三方模块的路径信息,确定目标应用的流量中的第三方模块流量和自有模块流量,将第三方模块流量作为第三方流量。

在一些实施例中,S240具体包括:

对于每条所述流量调用路径信息,

响应于确定该流量调用路径信息与所述第三方模块的路径信息相同,将该流量调用路径信息对应的流量作为第三方模块流量,

响应于确定该流量调用路径信息与所述第三方模块的路径信息不同,将该流量调用路径信息对应的流量作为自有模块流量。

如果一条流量调用路径信息与第三方模块的路径信息相同,则说明该条流量调用路径信息对应的流量是从该第三方模块调用的,该流量显然为第三方流量。

从上面所述可以看出,本公开提供的基于第三方库的第三方流量识别方法、装置及设备,获取目标应用的特征信息,根据目标应用的特征信息和预先获取的第三方库的特征信息,确定目标应用中的第三方模块,获取目标应用的流量调用路径信息和第三方模块的路径信息,根据流量调用路径信息和第三方模块的路径信息,确定目标应用的流量中的第三方模块流量和自有模块流量,将第三方模块流量作为第三方流量。本公开能够在不依赖第三方库白名单以及应用混淆的前提下识别应用中的第三方流量。

图3为本公开实施例提供的基于第三方库的第三方流量识别方法的一种更为具体的流程示意图;基于第三方库的第三方流量识别方法,包括:

S310、获取目标应用的特征信息。

在一些实施例中,S310具体包括:

获取所述目标应用的应用程序包;

利用Soot工具将所述应用程序包转化为Jimple语句,以得到所述目标应用的特征信息。

S320、模块对应的目标应用的特征信息与第三方库的特征信息的匹配度是否高于匹配度阈值。

对于目标应用中的每一个模块,

响应于确定该模块对应的目标应用的特征信息与预先获取的第三方库的特征信息的匹配度高于预设的匹配度阈值,将该模块作为第三方模块,

响应于确定该模块对应的目标应用的特征信息与预先获取的第三方库的特征信息的匹配度不高于预设的匹配度阈值,将该模块作为自有模块。

S330、获取目标应用的流量调用路径信息和第三方模块的路径信息。

在一些实施例中,S330具体包括:

利用Xposed工具获取所述目标应用中的流量信息,并打印函数调用栈,以得到所述流量调用路径信息。

S340、流量调用路径信息与第三方模块的路径信息是否相同。

对于每条该流量调用路径信息,

响应于确定该流量调用路径信息与第三方模块的路径信息相同,将该流量调用路径信息对应的流量作为第三方模块流量,

响应于确定该流量调用路径信息与第三方模块是路径信息不同,将该流量调用路径信息对应的流量作为自有模块流量。

将第三方模块流量作为第三方流量。

基于第三方库的第三方流量识别方法,还包括

S350、是否存在预设标识中的至少一个。

响应于确定自有模块流量中存在预设标识中的至少一个,将该自有模块流量作为第三方流量。

在一些实施例中,所述预设标识包括:appkey标识和token标识。

相关技术中,认为应用中的第三方流量仅来自于应用中的第三方模块(第三方模块是基于第三方库构建的),但是,发明人发现,自有模块中也会存在第三方流量,那么,虽然上述实施例提供的技术方案已经解决了相关技术中不能准确识别应用中的第三方流量的问题,但是为了更加全面的识别应用中的第三方流量,显然有必要识别自有模块流量中是否存在第三方流量。

发明人发现,在使用第三方库时,网络应用程序接口web api的使用需要在相应第三方平台上申请相应的调用凭据来认证身份,同时web api的返回类型以Json和Xml格式为主,所以可以判断流量中是否包含这两个特征来判断流量是否是web api,具体的,可以通过识别预设标识如appkey标识和token标识。

此外,目前的第三方库的数量已经达到了一个很大的规模,随着安卓应用的快速发展,相应的第三方库的数量的增长是不可避免的,本公开不基于白名单,因此并不受这方面的影响,具有较强的适应性。

需要说明的是,本公开实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本公开实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。

需要说明的是,上述对本公开的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种基于第三方库的第三方流量识别装置。

参考图4,所述基于第三方库的第三方流量识别装置,包括:

特征信息获取模块410,用于获取目标应用的特征信息。

在一些实施例中,特征信息获取模块410,具体用于:

获取所述目标应用的应用程序包;

利用Soot工具将所述应用程序包转化为Jimple语句,以得到所述目标应用的特征信息。

第三方模块确定模块420,用于根据目标应用的特征信息和预先获取的第三方库的特征信息,确定目标应用中的第三方模块。

在一些实施例中,第三方模块确定模块420,具体用于:

对于目标应用中的每一个模块,

响应于确定该模块对应的目标应用的特征信息与预先获取的第三方库的特征信息的匹配度高于预设的匹配度阈值,将该模块作为第三方模块。

路径信息获取模块430,用于获取目标应用的流量调用路径信息和第三方模块的路径信息。

在一些实施例中,路径信息获取模块430,具体用于:

利用Xposed工具获取所述目标应用中的流量信息,并打印函数调用栈,以得到所述流量调用路径信息。

第三方流量确定模块440,用于根据流量调用路径信息和第三方模块的路径信息,确定目标应用的流量中的第三方模块流量和自有模块流量,将第三方模块流量作为第三方流量。

在一些实施例中,第三方流量确定模块440,具体用于:

对于每条该流量调用路径信息,

响应于确定该流量调用路径信息与第三方模块的路径信息相同,将该流量调用路径信息对应的流量作为第三方模块流量,

响应于确定该流量调用路径信息与第三方模块是路径信息不同,将该流量调用路径信息对应的流量作为自有模块流量。

为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本公开时可以把各模块的功能在同一个或多个软件和/或硬件中实现。

上述实施例的装置用于实现前述任一实施例中相应的基于第三方库的第三方流量识别方法,并且具有相应的方法实施例的有益效果,在此不再赘述。

基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上任意一实施例所述的基于第三方库的第三方流量识别方法。

图5示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线 1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。

处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。

存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。

输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。

通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。

总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。

需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。

上述实施例的电子设备用于实现前述任一实施例中相应的基于第三方库的第三方流量识别方法,并且具有相应的方法实施例的有益效果,在此不再赘述。

基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的基于第三方库的第三方流量识别方法。

本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。

上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的基于第三方库的第三方流量识别方法,并且具有相应的方法实施例的有益效果,在此不再赘述。

需要说明的是,本公开的实施例还可以以以下方式进一步描述:

获取目标应用的特征信息;

根据所述目标应用的特征信息和预先获取的第三方库的特征信息,确定所述目标应用中的第三方模块;

获取所述目标应用的流量调用路径信息和所述第三方模块的路径信息;

根据所述流量调用路径信息和所述第三方模块的路径信息,确定所述目标应用的流量中的第三方模块流量和自有模块流量,将所述第三方模块流量作为第三方流量。

可选的,其中,还包括:

响应于确定所述自有模块流量中存在预设标识中的至少一个,将该自有模块流量作为第三方流量。

可选的,其中,所述获取目标应用的特征信息,包括:

获取所述目标应用的应用程序包;

利用Soot工具将所述应用程序包转化为Jimple语句,以得到所述目标应用的特征信息。

可选的,其中,还包括:

获取所述第三方库;

利用Soot工具将所述第三方库转化为Jimple语句,以得到所述第三方库的特征信息。

可选的,其中,所述目标应用中包含多个模块;所述根据所述目标应用的特征信息和预先获取的第三方库的特征信息,确定所述目标应用中的第三方模块,包括:

对于所述目标应用中的每一个所述模块,

响应于确定该模块对应的所述目标应用的特征信息与所述第三方库的特征信息的匹配度高于预设的匹配度阈值,将该模块作为所述第三方模块。

可选的,所述获取所述目标应用的流量调用路径信息,包括:

利用Xposed工具获取所述目标应用中的流量信息,并打印函数调用栈,以得到所述流量调用路径信息。

可选的,其中,所述根据所述流量调用路径信息和所述第三方模块的路径信息,确定所述目标应用的流量中的第三方模块流量和自有模块流量,包括:

对于每条所述流量调用路径信息,

响应于确定该流量调用路径信息与所述第三方模块的路径信息相同,将该流量调用路径信息对应的流量作为第三方模块流量,

响应于确定该流量调用路径信息与所述第三方模块的路径信息不同,将该流量调用路径信息对应的流量作为自有模块流量。

可选的,其中,所述预设标识包括:appkey标识和token标识。

所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本公开实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。

另外,为简化说明和讨论,并且为了不会使本公开实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本公开实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本公开实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本公开实施例。因此,这些描述应被认为是说明性的而不是限制性的。

尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。

本公开实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本公开实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号