基于多任务机制的安卓应用程序静态分析方法与流程

文档序号:20163334发布日期:2020-03-24 21:14阅读:324来源:国知局
基于多任务机制的安卓应用程序静态分析方法与流程

本发明涉及计算机技术领域,尤其是涉及一种基于多任务机制的安卓应用程序静态分析方法。



背景技术:

安卓是一种基于linux的自由及开放的操作系统,主要使用于移动终端。安卓系统的月活跃数量已经超过20亿,占据了手机操作系统市场份额的80%。从2016年至今,安卓应用商店上发布的应用(app)已经超过200万个。

多任务机制是安卓系统用户界面管理的一种核心机制,通过活动(activity)、回退栈(backstack)和任务栈的独特设计使得可以对用户操作进行方便地组织和对后台应用状态进行维护,使用户可以在应用之间方便地进行切换及平滑任务历史浏览。以安卓手机为例,一个任务(task)就是一组活动(activity)的集合,活动是按照打开的顺序被放置在先进后出的回退栈中。用户点击一个应用app的图标时,该app的任务会被移到前台进行显示。当该任务的活动a打开另一个活动b,b会置于栈顶进行显示,用户可以通过按下返回键将任务栈中的活动依次弹出,当最后一个活动被弹出,该任务就消失了。当安卓手机未运行用户选定的app时,就会执行mainactivity。

由此,多任务机制本质上是通过一个栈中有栈的两层嵌套结构来实现,语义比较复杂,普通程序员很难准确理解,从而在安卓应用程序设计时容易产生缺陷和漏洞,从而带来一些诸如界面劫持等安全隐患。针对安卓应用程序的多任务机制进行静态分析可以帮助开发人员更好地进行界面开发以及提升安卓应用的安全性。然而,目前技术中,安卓应用程序的静态分析主要集中在隐私和权限管理领域,缺乏对多任务机制进行静态分析的方法和工具。



技术实现要素:

有鉴于此,有必要针对上述的问题,提供一种基于多任务机制的安卓应用程序静态分析方法,可以针对安卓应用的多任务机制进行静态分析,避免设计中可能出现的安全漏洞。

一种基于多任务机制的安卓应用程序静态分析方法,包括:

构建安卓应用程序的任务栈模型;

对安卓应用任务栈模型进行任务栈格局可达性分析;以及

对安卓应用任务栈模型进行任务栈有界性分析。

所述构建安卓应用程序的任务栈模型的步骤,包括:

输入安卓应用程序的安装程序或者源代码进行反编译,提取得到manifest文件;

从manifest文件中提取安卓应用程序的活动属性以及活动转换规则;

基于控制流和数据流的静态分析构建对应的安卓应用任务栈模型。

所述对安卓应用任务栈模型进行任务栈格局可达性分析的步骤,包括:

利用分析算法将任务栈模型转换为有限状态机系统,从而将任务栈格局可达性问题转化为有限状态系统可达性问题,再利用符号模型检测工具进行求解。

所述符号模型检测工具为nuxmv。

所述对安卓应用任务栈模型进行任务栈有界性分析的步骤中,包括:

设置一个常数k,对给定任务的回退栈在其它至多k个任务的协助下使得其中活动数量无限增长进行分析。

本发明技术方案,相比于现有技术,可以针对安卓应用的多任务机制进行静态分析,避免设计中可能出现的安全漏洞。

附图说明

图1是本发明实施例中提供的基于多任务机制的安卓应用程序静态分析方法的流程示意图。

具体实施方式

下面结合本发明中的附图,对本发明中的技术方案进行清楚、完整的描述。基于本发明中的操作流程,本领域技术人员在没有作出创造性劳动前提下所获得的其它方法或工具,都属于本发明保护范围。

如图1,本发明实施例中提供一种基于多任务机制的安卓应用程序静态分析方法,包括:

构建安卓应用程序的任务栈模型;

对安卓应用任务栈模型进行任务栈格局可达性分析;以及

对安卓应用任务栈模型进行任务栈有界性分析。

与上述方法相应,本发明实施例也提供了一种安卓应用多任务机制分析工具,包括三个模块:任务栈模型提取模块、任务栈格局可达性分析模块和任务栈有界性分析模块。

下面对上述的方法,以及上述的分析工具进行详细说明。

任务栈模型提取模块,用于构建安卓应用程序的任务栈模型,对安卓应用程序(源代码或安装程序apk输入)先进行反编译,提取得到manifest文件,从manifest文件中提取安卓应用程序的活动属性以及活动转换规则,再基于控制流和数据流的静态分析构建对应的安卓应用任务栈模型。

任务栈格局可达性分析模块,用于进行任务栈格局可达性分析。任务栈的格局是指由多个回退栈组成的一个序列,其中每个回退栈的内容(即由多个活动组成的一个序列)也已经确定。任务栈的格局可达性问题是指判定给定的任务栈格局是否可以从任务栈的初识格局到达。许多与多任务机制相关的安全性问题,比如用户界面劫持问题,都可以归约为任务栈的可达性问题。本实施例中,任务栈的格局可达性问题分析算法输入为安卓应用的任务栈模型,安卓应用的任务栈模型描述了其任务栈变化的规则,即活动之间的调用关系,任务栈的变化由这些规则的语义来决定。直观来讲,格局可达性问题的分析算法将任务栈模型翻译成有限状态系统,从而将任务栈格局可达性问题转化为有限状态系统可达性问题,然后使用符号模型检测工具nuxmv来进行求解。具体来讲,任务栈格局可达性问题分析算法包括如下三个步骤:

(1)针对安卓系统任务栈行为的安卓诊断应用,得到了活动调用关系规则的精确语义,

(2)然后通过设置任务栈中每个回退栈的活动数量上限,将任务栈格局编码成长度受限的字符串,而且根据活动调用关系语义,得到了这些字符串之间的变换规则,从而将任务栈格局可达性问题转化为一个有限状态系统的状态可达性问题(这里一个状态即一个长度受限的字符串,因此有限状态系统的状态数为指数),

(3)为了缓解得到的有限状态系统的状态空间爆炸问题,利用符号化模型检测工具nuxmv来求解该有限状态系统的状态可达性问题,从而提高安卓应用任务栈格局可达性分析的可扩展性。

任务栈有界性分析模块,用于进行任务栈有界性分析。任务栈的有界性问题是指判断一个安卓应用程序是否存在着由于重复执行某一个操作序列使得某一个回退栈中活动数量无限增长的安全风险,这种风险可以导致应用程序崩溃、黑屏、甚至移动设备重启。其输入同样是安卓应用的任务栈模型。为了降低复杂度,有界性分析算法设置一个常数k,对给定任务的回退栈在其它至多k个任务(回退栈)的协助下使得其中的活动数量无限增长进行分析。通过对其它k个回退栈的活动调用规则的分析,为给定任务的回退栈增加虚拟的活动调用规则,从而使得对多个任务的回退栈的分析转化为对单栈系统的分析,而单栈系统的有界性分析相对简单,可以去判断活动调用规则是否存在满足某种要求的环。而且利用任务栈可达性分析算法来得到任务栈模型中对应于给定任务的回退栈无界性的活动调用路径,以帮助多任务机制分析人员理解回退栈无界性是如何产生的。

综上所述,本发明实施例对与安卓应用的多任务机制相关的两个问题,即任务栈格局可达性问题和任务栈有界性问题,进行静态分析。利用符号模型检测技术设计了具有良好扩展性的安卓应用任务栈格局可达性分析算法,而且提出了简单有效的安卓应用任务栈有界性分析算法,并开发了安卓应用多任务机制静态分析工具。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1