一种Android应用程序运行时API调用量预估方法技术

技术编号:17541901 阅读:57 留言:0更新日期:2018-03-24 19:15
本发明专利技术公开了一种Android应用程序运行时API调用量预估方法,包括:从安装包获得应用程序控件的界面信息和其与API的关联关系、Activity之间的跳转关系和其与控件之间的关联关系、Service和Broadcast的调用关系和其与API的关联关系。本发明专利技术通过控件的属性计算出用户在某次操作时对Activity内某个控件的操作概率,并通过修改的PageRank算法计算Activity的跳转关系,得到用户对Activity的访问概率,再结合Activity内部的控件的操作概率以及控件相关的API最终估算出应用程序运行时的API调用量,实现对应用程序的快速便捷检测,以便后期通过API调用量所代表的应用程序行为判断应用程序的安全性。本发明专利技术弥补了动态检测数据采集的复杂性,对提高应用程序的检测能力具有深远的意义。

An estimation method of API usage in Android application runtime

【技术实现步骤摘要】
一种Android应用程序运行时API调用量预估方法
本专利技术涉及Android应用程序检测领域,特别涉及Android应用程序的静态检测方案。本专利技术涉及一种Android应用程序静态检测手段中的应用程序安装包的反编译以及分析技术,特别是指通过自定义的检测方案实现对应用程序安装包的解析,从而达到在不安装应用程序的情况下估测应用程序运行时API调用量的目的。
技术介绍
随着Android系统的普及与发展,网络上和各大应用市场出现了越来越多的应用软件,随着各式各样的应用程序的发展,恶意软件也越来越多,越来越难以检测。国内外学者对手机应用程序的恶意软件的分析和检测做了大量的研究,目前基于软件行为的检测方案正在被广泛研究使用。该检测方案相对与其他检测方案来说有着检测准确,对未知恶意程序识别率高等优点。基于软件行为的检测方案在实现形式上主要有以API调用量表示软件行为,以API调用序列表示软件行为,以隐私数据使用路径表示软件行为等几种实现方式。其中以API调用量表示软件行为的方式最为普遍与简单,可以将应用程序作为一个整体进行检测;以API调用序列表示软件行为的方式通过检测的行为序列作为判断对象,对应用程序的某一连续行为进行检测;以隐私数据使用路径表示软件行为的方式通过对隐私数据使用情况的监测实现了对应用程序非法恶意行为的判别。目前基于软件行为的检测方案大多是通过动态检测技术来实现的,即通过模拟器运行被检测的软件的某项功能,检查运行结果与预期结果的差距,来确定被测软件此功能是否存在安全问题。动态检测技术在不分析应用程序结构和特征代码的情况下,直接实际运行待测应用程序,通过某种方式监听应用程序的行为特征并分析判断应用程序是否是恶意程序。动态检测技术能够检测出程序实际运行时的恶意行为,即使是未知的恶意程序也可以被检测到。因为其检测的是恶意行为而不是某一段恶意代码,代码可以变化,但恶意行为都是固定的几种。动态检测技术有检测速度慢,检测时间长,检测过程繁琐复杂等缺点。因为动态检测技术需要安装并真实运行应用程序才能进行采集数据,所以动态检测技术可能会由于测试环境或测试用例等的影响而无法准确、完善的检测整个应用程序。动态检测技术的另一方面的缺点是其在实际检测过程中需要运行应用程序,该步骤多通过人工或自动化测试实现,相对于人工,自动化测试由于测试模型的设计问题很难做到对应用程序的全面测试,而人工测试由于需要大量人力,无法满足在当前应用程序数量日益增多情况下对大量应用程序进行检测的需求。与动态检测技术相对应的是静态检测技术。静态检测技术是指对被测软件的源程序或者二进制代码进行扫描,从语法、语义上理解程序的行为,直接分析被检测程序的特征,寻找可能导致错误的异常。目前其主要的检测方式有二进制程序分析与源代码分析两种。二进制程序分析是针对软件代码进行审查的检测技术,该分析技术通过读取二进制文件,与已有的恶意行为二进制特征代码库进行匹配,通过匹配结果判断应用程序的安全性。源代码分析是针对编程语言本身的检测技术,是指对程序的反编译代码进行分析,通过词法分析、语法分析和静态语义分析,检测程序中潜在的安全漏洞。同时,源代码分析可被用于污点分析,即将某些敏感数据标记为污点数据,并重点检测分析特殊API调用以及隐私数据的使用和传递,通过应用程序对污点数据的使用情况判断应用程序的安全性。本专利技术在以上基础上,参考了静态检测技术,对API调用量的提取方案进行修改,以期设计一种不需要对应用程序进行运行测试就可以得出API调用量的方法。现有静态检测技术很少考虑到提取API调用量的相关信息,同时,现在很多动态检测手段受限于检测方式、技术限制等而无法全面精确的对应用程序进行检测。因此研究通过静态检测技术来获得应用程序的API调用量,最大限度的使用静态检测技术,设计新的数据提取方案,具有重要的意义。
技术实现思路
(一)要解决的技术问题本专利技术要解决的技术问题是:1、通过反编译技术对组件、控件以及API进行关联;2、通过界面信息估算用户对控件的操作概率;3、设计算法对Activity之间的跳转关系进行计算,得出Activity访问概率;4、对Service和Broadcast使用特殊计算方式统计其访问概率。(二)技术方案为解决上述技术问题,本专利技术提供了一种Android应用程序运行时API调用量预估方法,包括以下步骤:步骤一:用过静态解析技术分析应用程序安装包并收集Android组件,控件以及API等的相关数据;步骤二:通过XML文件和静态数据计算一个Activity内部用户对每个控件的操作概率;步骤三:根据数据模型估算每一个Android组件的访问概率;步骤四:结合步骤二和步骤三计算API调用量。在一些实施方式中,步骤一具体表现为在解析反编译信息的基础上,结合Android源码,综合安装包在反编译之后的各方面信息建立分析数据模型。在一些实施方式中,步骤二所述控件的操作强度可以由以下两个部分得出:1、从应用程序设计的角度来看,应用程序的设计者会将其主要、常用的功能放在Activity界面的中下部分,并且有着重要功能且经常使用的控件会占较大的界面比例,所以控件强度一个极为重要的指标就是控件在界面中所占的比例和位置。对于这方面的强度,可以通过对控件进行分级来进行区分,不同位置、大小的控件有着不同的级别,而不同级别有不同的强度,本部分得到的数据可定义为控件的基础强度,即只通过控件自有属性计算得出。对于同一部分的控件,可以根据其所占比例进行强度设定,所以由控件位置带来的强度主要由控件所占位置sl(screenlocation)和控件比例p(Proportionality)以及控件类型t(type)决定,将三个部分分别按照百分比进行统计,最后控件百分比=α*位置百分比+β*类型百分比+γ*面积百分比。2、从Activity的功能设计来看,对于某些相关联的控件来说,用户点击控件A之前可能需要先点击控件B,对于这种情况,控件B的强度又会对在其事件处理函数内部引用到的控件A的强度产生影响。对于这一部分,需要将控件强度进行传递,对于必定调用的情况,直接将控件B的强度累加到控件A的强度上;对于多个控件的情况,按照控件类型对控件B的强度进行分配,一般来说,button获得的比例应比checkbox的大,对于同样类别的控件,可以令两个控件均分强度。在统计完所有控件强度的基础上,统计在当前Activity内每一个控件占总强度的比例,其意义为在对应用程序进行一次操作的情况下,用户对当前Activity中每一个控件的访问概率。在一些实施方式中,步骤三的Android组件的访问概率的计算方式分为Activity、Service、Broadcast三种组件分别进行计算,详细计算逻辑如下:1、对于Activity的访问概率的计算方式如下:设定所有的Activity的初始强度值(由于PageRank的特性,设定非零即可);遍历所有的Activity计算当前Activity所有通过控件跳转的总强度和Sout(v);计算当前Activity的入度(通过控件跳入当前Activity的控件强度和)和出度(当前Activity通过跳出的控件强度和)通过强度计算公式计算当前Activity的强度;结束遍历本文档来自技高网
...
一种Android应用程序运行时API调用量预估方法

【技术保护点】
一种Android应用程序运行时API调用量预估方法,其特征是,该方法包括以下步骤:S1:用过静态解析技术分析应用程序安装包并收集Android组件,控件以及API等的相关数据;S2:通过XML文件和静态数据计算每一个Android组件内部用户对控件的操作概率;S3:在步骤S2的基础上,根据数据模型估算每一个Android组件的访问概率;S4:在步骤S2和步骤S3的基础上,计算API调用量。

【技术特征摘要】
1.一种Android应用程序运行时API调用量预估方法,其特征是,该方法包括以下步骤:S1:用过静态解析技术分析应用程序安装包并收集Android组件,控件以及API等的相关数据;S2:通过XML文件和静态数据计算每一个Android组件内部用户对控件的操作概率;S3:在步骤S2的基础上,根据数据模型估算每一个Android组件的访问概率;S4:在步骤S2和步骤S3的基础上,计算API调用量。2.根据权利要求1所述的Android应用程序运行时API调用量预估方法,其特征在于,所述步骤S2所述控件的操作强度得出包含应用程序界面信息和控件之间关联关系。3.根据权利要求2所述的应用程序运行时API调用量预估方法,其特征在于,对于同一Activity内部的控件,统计了控件位置百分比、控件类型百分比、控件面积百分比三个部分,并按照一定的比例对三者进行了整合。4.根据权利要求1所述的应用程序运行时API调用量预估方法,其特征在于,所述步骤S3对每一个Android组件的访问概率的计算包含Activity、Service、Broadcast三种组件的计算方式。5.根据权利要求4所述的应用程序运行时API调用量预估方法,其特征在于,组件访问概率的计算方式借鉴PageRank算法,通过确定组件间关系进行多次计算,最终各个组件的计算结果趋于稳定时的值即为各个组件的强度值。由于用户只能操作Activity,所以在统计完所有Activity强度的基础上,统计每一个Activity占总体强度的比例,其意义为在对应用程序进行一次操作的情况下,用户对每一个应用程序的Activity的访问概率。6.根据权利要求4所...

【专利技术属性】
技术研发人员:范文浩张岱帅吴帆张洪光刘元安
申请(专利权)人:北京邮电大学
类型:发明
国别省市:北京,11

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

1