一种检测移动应用第三方库功能的方法技术

技术编号:18621214 阅读:27 留言:0更新日期:2018-08-08 00:20
本发明专利技术涉及一种检测移动应用第三方库功能的方法。该方法包括以下步骤:1)收集若干第三方库,统计每个第三方库的API调用情况,根据各API调用的次数对每个第三方库生成一个向量;2)对各第三方库的功能类别进行标注,使用步骤1)生成的向量对不同功能类别的第三方库训练神经网络模型;3)对于待检测的第三方库,使用步骤1)的方法生成对应的向量,然后将该向量输入步骤2)得到的神经网络模型,从而判定该待检测的第三方库的功能类别。本发明专利技术的目的是提供一个新的方法,能够分析出给定安卓系统第三方库的功能集合,快速自动判定安卓应用第三方库的功能类别。

A method of detecting the third party library function of mobile application

The invention relates to a method for detecting the functions of third party libraries in mobile applications. The method includes the following steps: 1) collect a number of third party libraries, count the API calls of each third party library, generate a vector for each third party Library Based on the number of API calls; 2) annotate the functional categories of each third party library, and use step 1) to train the deity of the third party libraries of different functional categories. Through the network model; 3) for the third party library to be detected, the corresponding vector is generated by the method of step 1, and then the vector is entered step 2) and the neural network model is obtained to determine the function category of the third party library to be detected. The aim of the invention is to provide a new method to analyze the function set of the third party Library of the delta system and quickly automatically determine the functional category of the Android application third party library.

【技术实现步骤摘要】
一种检测移动应用第三方库功能的方法
本专利技术提供一种检测移动应用第三方库功能的方法,具体涉及一种使用深度学习检测安卓移动应用第三方程序库功能的方法。
技术介绍
目前,随着手机的广泛普及。移动应用越来越多。由于手机通用操作系统的出现,开发人员开发应用也变得越来越便捷。移动应用会使用很多第三方库。每个第三方库都有自己的功能。但是通常一个库都包含了很多功能,并且这些功能有很多都是重复的。如何识别重复功能就成了一个问题。如果重复功能可以被识别,开发者就能够从中挑选自己需要的第三方库,从而降低手机应用程序的功能冗余。机器学习是近年来流行的一项技术,在有大数据支撑的情况下,可以训练出判定模型。对样本进行分类识别。
技术实现思路
本专利技术的目的是提供一个新的方法,能够分析出给定安卓系统第三方库的功能集合,判定安卓应用第三方库的功能类别。本专利技术的原理是:先把第三方库进行反编译,然后提取出使用到的API,以及对应的使用次数;再将它输入预先训练好的神经网络中,神经网络依次对各个分类进行判断,输出对应各个类别的判断。本专利技术提供的技术方案如下:一种检测移动应用第三方库功能的方法,包括以下步骤:1)收集若干第三方库,统计每个第三方库的API调用情况,根据各API调用的次数对每个第三方库生成一个向量;2)对各第三方库的功能类别进行标注,使用步骤1)生成的向量对不同功能类别的第三方库训练神经网络模型;3)对于待检测的第三方库,使用步骤1)的方法生成对应的向量,然后将该向量输入步骤2)得到的神经网络模型,从而判定该待检测的第三方库的功能类别。对上述方法进一步具体说明如下:A.得到一个第三方库时:A1.使用反编译工具分析出API调用的地方;A2.统计每个API被调用的次数;A3.将每个应用的统计信息都整理成一个向量,即对每个第三方库生成一个向量,向量中的每个元素对应一个API的被调用次数;B.训练神经网络时:B1.对第三方库的功能进行标注,按照不同的功能类别将标记好的数据切分为训练集和测试集;B2.利用训练集训练出一个神经网络模型;B3.对神经网络模型进行交叉验证;B4.修改神经网络模型的参数,重新训练,得到更好的神经网络模型。C.训练好神经网络模型后,就可以判定第三方库功能类别:C1.将需要判定的第三方库,使用A中方法,生成对应向量;C2.将向量输入神经网络模型,输出第三方库的功能类别。本专利技术的有益效果是:利用本专利技术提供的技术方案,可以快速自动判定给定安卓应用第三方库的功能类别。附图说明图1是本专利技术的第三方库预处理流程图。图2是本专利技术的训练流程图。图3是本专利技术的功能判定流程图。具体实施方式本专利技术的具体实施方式如下:A.从APK应用程序中抽取训练用的特征,执行如下操作:A1.将这些APK进行反编译。从反编译后的代码中找到第三方库,进而中找到第三方库中所有的安卓API调用,并记录下来。A2.统计出每个API的调用情况,将每个API被调用的次数提取出来。A3.根据上述信息,对每个第三方库生成一个向量,向量中的每个元素都对应着一个API的被调用次数。A4.通过人工手段,标注出一个训练数据集。B.对应用生成向量后,要训练出一个神经网络模型,执行如下操作:B1.对第三方库的功能进行标注。然后按照不同的功能类别将数据切分为训练集和测试集。B2.利用训练集数据,对于不同的功能类别都使用三层神经网络训练出一个神经网络模型。B3.根据数据集的大小,采用10-fold对每种功能类别训练出的神经网络模型进行交叉验证。B4.根据交叉验证的结果,对神经网络模型的参数进行优化,得到一个效果较好的神经网络模型。C.获得训练好的神经网络模型后,对一个给定的第三方库进行分析,执行如下操作:C1.根据A中的方法,对给定的第三方库进行反编译,统计API调用次数,生成此第三方库对应的向量。C2.利用B中训练好的神经网络模型,将生成的第三方库对应的向量输入该神经网络模型,对于每个分类,输出该第三方库属于各个分类的评分(或概率)。获得评分(或概率)后,分析第三方库功能冗余,判定第三方库的功能类别。提供开发者关于第三方库功能冗余的报告,提示某些功能不同的第三方库都有提供,便于开发者精简第三方库的使用。下面通过实例对本专利技术做进一步说明。A.特征提取过程下载一些安卓应用的安装程序,如365日历。使用apktools对365日历.apk进行反编译,将它反编译为smali字节码。在字节码目录下可以找到了若干个库的目录,包括com/tencent/open,com/umeng/analytics,org/kxml2等。在这些目录中找到所有的安卓API调用。统计每个库API的调用情况,提取每个API调用的次数。对每个库生成一个向量,然后以此来训练神经网络模型。B.数据标注与机器学习首先,对第三方库的功能进行标注,譬如把com/tencent/open标注为社交库,把com/umeng/analytics标注为分析库,把org/kxml2标注为开发工具库。把数据分为训练集和测试集两个部分。利用训练集的数据,对每个不同的种类都训练出一个神经网络模型。根据数据集的大小,对训练出来的模型进行交叉验证。根据交叉验证的结果,对参数进行优化,得到更好效果的神经网络模型。C.数据分析获得训练好的神经网络模型后,就可以进行分析了。假设我们拿到了一个新的apk,使用apktools将它反编译为smali字节码。假设在其反编译后的目录下发现com/fasterxml目录,假设很难确定com/fasterxml的类别。于是可以使用同样的方式统计com/fasterxml目录下的API调用情况,提取每个API的调用次数,生成com/fasterxml对应的向量特征。利用训练好的神经网络模型,对于每个分类,都计算属于该分类的概率。经过计算后,发现com/fasterxml隶属于开发工具库的概率最高,因此把com/fasterxml归为开发工具库。以上实施例仅用以说明本专利技术的技术方案而非对其进行限制,本领域的普通技术人员可以对本专利技术的技术方案进行修改或者等同替换,而不脱离本专利技术的精神和范围,本专利技术的保护范围应以权利要求书所述为准。本文档来自技高网...

【技术保护点】
1.一种检测移动应用第三方库功能的方法,其特征在于,包括以下步骤:1)收集若干第三方库,统计每个第三方库的API调用情况,根据各API调用的次数对每个第三方库生成一个向量;2)对各第三方库的功能类别进行标注,使用步骤1)生成的向量对不同功能类别的第三方库训练神经网络模型;3)对于待检测的第三方库,使用步骤1)的方法生成对应的向量,然后将该向量输入步骤2)得到的神经网络模型,从而判定该待检测的第三方库的功能类别。

【技术特征摘要】
1.一种检测移动应用第三方库功能的方法,其特征在于,包括以下步骤:1)收集若干第三方库,统计每个第三方库的API调用情况,根据各API调用的次数对每个第三方库生成一个向量;2)对各第三方库的功能类别进行标注,使用步骤1)生成的向量对不同功能类别的第三方库训练神经网络模型;3)对于待检测的第三方库,使用步骤1)的方法生成对应的向量,然后将该向量输入步骤2)得到的神经网络模型,从而判定该待检测的第三方库的功能类别。2.如权利要求1所述的方法,其特征在于,步骤1)对应用程序进行反编译,从反编译后的代码中找到第三方库,进而找到第三方库中所有的API调用,然后统计各API调用的次数并生成所述向量,向量中的每个元素对应一个API的被调用次数。3.如权利要求1所述的方法,其特征在于,步骤2)包括以下子步骤:a)对第三方库的功能类别...

【专利技术属性】
技术研发人员:郭耀宗毅马子昂陈向群
申请(专利权)人:北京大学天津滨海新一代信息技术研究院
类型:发明
国别省市:天津,12

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1