CN108376081A - 一种检测移动应用第三方库功能的方法 - Google Patents
一种检测移动应用第三方库功能的方法 Download PDFInfo
- Publication number
- CN108376081A CN108376081A CN201611024539.6A CN201611024539A CN108376081A CN 108376081 A CN108376081 A CN 108376081A CN 201611024539 A CN201611024539 A CN 201611024539A CN 108376081 A CN108376081 A CN 108376081A
- Authority
- CN
- China
- Prior art keywords
- party library
- neural network
- network model
- party
- library
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4434—Reducing the memory space required by the program code
- G06F8/4435—Detection or removal of dead or redundant code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种检测移动应用第三方库功能的方法。该方法包括以下步骤:1)收集若干第三方库,统计每个第三方库的API调用情况,根据各API调用的次数对每个第三方库生成一个向量;2)对各第三方库的功能类别进行标注,使用步骤1)生成的向量对不同功能类别的第三方库训练神经网络模型;3)对于待检测的第三方库,使用步骤1)的方法生成对应的向量,然后将该向量输入步骤2)得到的神经网络模型,从而判定该待检测的第三方库的功能类别。本发明的目的是提供一个新的方法,能够分析出给定安卓系统第三方库的功能集合,快速自动判定安卓应用第三方库的功能类别。
Description
技术领域
本发明提供一种检测移动应用第三方库功能的方法,具体涉及一种使用深度学习检测安卓移动应用第三方程序库功能的方法。
背景技术
目前,随着手机的广泛普及。移动应用越来越多。由于手机通用操作系统的出现,开发人员开发应用也变得越来越便捷。
移动应用会使用很多第三方库。每个第三方库都有自己的功能。但是通常一个库都包含了很多功能,并且这些功能有很多都是重复的。如何识别重复功能就成了一个问题。如果重复功能可以被识别,开发者就能够从中挑选自己需要的第三方库,从而降低手机应用程序的功能冗余。
机器学习是近年来流行的一项技术,在有大数据支撑的情况下,可以训练出判定模型。对样本进行分类识别。
发明内容
本发明的目的是提供一个新的方法,能够分析出给定安卓系统第三方库的功能集合,判定安卓应用第三方库的功能类别。
本发明的原理是:先把第三方库进行反编译,然后提取出使用到的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归为开发工具库。
以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。
Claims (7)
1.一种检测移动应用第三方库功能的方法,其特征在于,包括以下步骤:
1)收集若干第三方库,统计每个第三方库的API调用情况,根据各API调用的次数对每个第三方库生成一个向量;
2)对各第三方库的功能类别进行标注,使用步骤1)生成的向量对不同功能类别的第三方库训练神经网络模型;
3)对于待检测的第三方库,使用步骤1)的方法生成对应的向量,然后将该向量输入步骤2)得到的神经网络模型,从而判定该待检测的第三方库的功能类别。
2.如权利要求1所述的方法,其特征在于,步骤1)对应用程序进行反编译,从反编译后的代码中找到第三方库,进而找到第三方库中所有的API调用,然后统计各API调用的次数并生成所述向量,向量中的每个元素对应一个API的被调用次数。
3.如权利要求1所述的方法,其特征在于,步骤2)包括以下子步骤:
a)对第三方库的功能类别进行标注,按照不同的功能类别将标记好的数据切分为训练集和测试集;
b)利用训练集训练出一个神经网络模型;
c)对神经网络模型进行交叉验证;
d)根据交叉验证的结果,对神经网络模型的参数进行优化,得到优化的神经网络模型。
4.如权利要求3所述的方法,其特征在于,步骤a)通过人工手段对第三方库的功能类别进行标注。
5.如权利要求3所述的方法,其特征在于,步骤b)对于每个功能类别都使用三层神经网络训练出一个神经网络模型。
6.如权利要求1所述的方法,其特征在于,步骤3)利用训练好的神经网络模型,判定第三方库属于各个功能类别的评分或概率,根据获得的评分或概率判定第三方库的功能类别。
7.如权利要求6所述的方法,其特征在于,步骤3)在获得第三方库属于各个功能类别的评分或概率后,分析第三方库功能冗余,并提供给开发者关于第三方库功能冗余的报告。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611024539.6A CN108376081A (zh) | 2016-11-21 | 2016-11-21 | 一种检测移动应用第三方库功能的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611024539.6A CN108376081A (zh) | 2016-11-21 | 2016-11-21 | 一种检测移动应用第三方库功能的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108376081A true CN108376081A (zh) | 2018-08-07 |
Family
ID=63016186
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611024539.6A Pending CN108376081A (zh) | 2016-11-21 | 2016-11-21 | 一种检测移动应用第三方库功能的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108376081A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110727952A (zh) * | 2019-08-30 | 2020-01-24 | 国家计算机网络与信息安全管理中心 | 一种移动应用程序第三方库隐私收集辨识方法 |
CN113641363A (zh) * | 2021-10-18 | 2021-11-12 | 北京邮电大学 | 一种第三方库检测方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103853979A (zh) * | 2010-12-31 | 2014-06-11 | 北京奇虎科技有限公司 | 基于机器学习的程序识别方法及装置 |
CN104751052A (zh) * | 2013-12-30 | 2015-07-01 | 南京理工大学常熟研究院有限公司 | 基于svm算法的移动智能终端软件的动态行为分析方法 |
CN105426760A (zh) * | 2015-11-05 | 2016-03-23 | 工业和信息化部电信研究院 | 一种安卓恶意应用的检测方法及装置 |
CN105512558A (zh) * | 2016-01-07 | 2016-04-20 | 北京邮电大学 | 一种基于反编译模块特征的android广告插件检测方法 |
CN105989288A (zh) * | 2015-12-31 | 2016-10-05 | 武汉安天信息技术有限责任公司 | 一种基于深度学习的恶意代码样本分类方法及系统 |
-
2016
- 2016-11-21 CN CN201611024539.6A patent/CN108376081A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103853979A (zh) * | 2010-12-31 | 2014-06-11 | 北京奇虎科技有限公司 | 基于机器学习的程序识别方法及装置 |
CN104751052A (zh) * | 2013-12-30 | 2015-07-01 | 南京理工大学常熟研究院有限公司 | 基于svm算法的移动智能终端软件的动态行为分析方法 |
CN105426760A (zh) * | 2015-11-05 | 2016-03-23 | 工业和信息化部电信研究院 | 一种安卓恶意应用的检测方法及装置 |
CN105989288A (zh) * | 2015-12-31 | 2016-10-05 | 武汉安天信息技术有限责任公司 | 一种基于深度学习的恶意代码样本分类方法及系统 |
CN105512558A (zh) * | 2016-01-07 | 2016-04-20 | 北京邮电大学 | 一种基于反编译模块特征的android广告插件检测方法 |
Non-Patent Citations (1)
Title |
---|
ANNAMALAI NARAYANAN等: "AdDetect: Automated Detection of Android Ad Libraries using Semantic Analysis", 《2014年IEEE第九届智能传感器、传感器网络和信息处理国际会议(ISSNIP)》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110727952A (zh) * | 2019-08-30 | 2020-01-24 | 国家计算机网络与信息安全管理中心 | 一种移动应用程序第三方库隐私收集辨识方法 |
CN113641363A (zh) * | 2021-10-18 | 2021-11-12 | 北京邮电大学 | 一种第三方库检测方法及装置 |
CN113641363B (zh) * | 2021-10-18 | 2022-02-11 | 北京邮电大学 | 一种第三方库检测方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107222865B (zh) | 基于可疑行为识别的通讯诈骗实时检测方法和系统 | |
CN106446691B (zh) | 检测软件中集成或定制的开源项目漏洞的方法和装置 | |
CN109615116A (zh) | 一种电信诈骗事件检测方法和检测系统 | |
CN104966031B (zh) | 安卓应用程序中非权限相关隐私数据的识别方法 | |
CN108108902B (zh) | 一种风险事件告警方法和装置 | |
CN105184160B (zh) | 一种基于API对象调用关系图的Android手机平台应用程序恶意行为检测的方法 | |
CN106572117B (zh) | 一种WebShell文件的检测方法和装置 | |
CN109241711A (zh) | 基于预测模型的用户行为识别方法及装置 | |
Jimenez et al. | Vulnerability prediction models: A case study on the linux kernel | |
Sadler | The evaluation of assessment: post-EIS research and process development | |
CN106934275B (zh) | 一种基于个人信息的口令强度评测方法 | |
CN106294559B (zh) | 一种应用流量分析方法及装置 | |
CN103136471B (zh) | 一种恶意Android应用程序检测方法和系统 | |
CN107392025A (zh) | 基于深度学习的恶意安卓应用程序检测方法 | |
CN107341401A (zh) | 一种基于机器学习的恶意应用监测方法和设备 | |
CN105787366A (zh) | 基于组件关系的安卓软件可视化安全分析方法 | |
CN108537056A (zh) | 一种双层过滤式的数据脱敏方法和系统 | |
CN105095415A (zh) | 网络情绪的确定方法和装置 | |
CN107341399A (zh) | 评估代码文件安全性的方法及装置 | |
CN111159387A (zh) | 基于多维度报警信息文本相似度分析的推荐方法 | |
CN106548073A (zh) | 基于卷积神经网络的恶意apk的筛查方法 | |
CN104156447A (zh) | 一种智能社交平台广告预警及处理方法 | |
CN108280348A (zh) | 基于rgb图像映射的安卓恶意软件识别方法 | |
CN106778264A (zh) | 一种移动客户端的应用程序分析方法及分析系统 | |
CN108446572A (zh) | 一种基于服务粒度的隐私权限管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180807 |