一种基于强制执行的Android应用软件测试方法技术

技术编号:13942649 阅读:65 留言:0更新日期:2016-10-29 20:04
本发明专利技术涉及一种基于强制执行的Android应用软件测试方法。该方法通过结合静态和动态分析方法克服当前Android应用测试过程中存在的不足。首先基于静态方法确定关键行为相关的执行路径;然后通过控制应用的执行过程,限制应用的执行过程,并且首次采用异常容忍的执行沙盒对Android应用执行过程中的异常进行容忍,保证关键行为一定被触发。因此,该方法能够提取一些静态方法无法提取的执行参数信息,同时也能克服动态方法无法有效触发应用行为的问题。通过对多种恶意软件样本进行分析,本发明专利技术的方法能够以高概率的对它们的执行参数如URL等信息进行提取。

【技术实现步骤摘要】

本专利技术属于信息
,具体涉及一种基于强制执行技术对Android应用软件进行测试的方法。
技术介绍
当前,Android操作系统占据了80%以上的移动手机操作系统市场份额。巨大的经济利益促进了整个Android生态圈的发展。仅Google Play就有超过百万级应用。如此大量的应用,其中一些不乏存在相应的安全问题。特别是,Android不仅有Google官方的应用市场,还存在许多第三方的应用平台。不同厂商的管理、技术能力参差不齐,使得Android应用软件中存在的问题(如恶意软件、安全漏洞)更加严重。针对这些问题,研究相应的分析和测试技术是当前的一大热点。当前关于Android应用的分析技术中,主要包括两类:静态分析方法和动态分析方法。静态分析方法直接对Android应用软件的原文件、反汇编代码、资源文件(如图片、配置)等进行分析,提取其中的特征或者定义模型对软件进行检测。一个典型的例子是针对恶意软件,静态分析方法可以从二进制文件中提取特征对其他怀疑的应用进行检测。这些可提取的特征多种多样,比如字符指纹、代码中使用的关键API、数据流等。一个静态方法主要的问题是提取的特征往往容易被改变,或者能够提取的仅仅是一些较为明显的行为特征。在一些复杂的情况下,静态方法能够提取到恶意软件行为特征与正常软件的特征是非常相似的,难以用于区分。比如正常软件和恶意软件都需要搜集终端系统的数据发送到服务器。区别恶意软件和正常软件的因素可能是数据最终被发送给了谁,根据服务器地址才能判断是否是恶意软件。而服务器的URL地址是一个字符串,很容易对它进行改变,比如加密。用静态方法对加密的字符进行解密是非常困难的。直观的,只要执行Android应用,他们的行为和执行参数(如服务器URL)都能被提取。但是Android应用动态分析一个主要的困难在于如何自动有效的触发它的行为。当前主要的一些自动方法主要采用模糊测试技术动态执行Android应用软件。但是,模糊测试主要产生随机事件流触发Android应用的行为。如果恶意软件将它的行为隐藏起来,比如需要用户先登录后,才能触发。这样,模糊测试方法几乎无法生成如此复杂的输入,无法自动的触发恶意行为。综上所述,提取单一的静态特征不足以对复杂的Android应用软件进行检测,同时也需要动态特征帮助检测。而当前的动态Android应用分析方法,主要采用手工方法或者随机的模糊测试执行软件,缺乏自动的且有针对性的测试方法。
技术实现思路
本专利技术的目的在于提供一种自动的且有效的Android应用测试方法,针对性的提取Android应用软件的重要执行参数,如加密的URL,这些执行参数可以用于软件的进一步检测,如进行威胁评估。本方法的主要内容是:结合静态和动态Android应用软件分析方法,设计自动测试方法提取Android应用软件的重要执行参数,克服传统自动动态方法无法触发隐藏行为的问题。首先,本专利技术的方法基于静态分析技术选择一些通向部分关键函数调用的代码路径。然后,通过控制Android软件的执行,使这些路径之上的代码被强制进行执行,从而提取相关的重要参数。本专利技术的一种基于强制执行的Android应用软件测试方法,其具体步骤如下:1)应用软件代码转换:为了便于分析,Android应用软件代码首先被转化为中间代码语言。2)应用代码图构造:基于静态分析技术,分析Android应用代码中的函数调用关系,构建函数调用图(Function Call Graph,FCG)。进一步,对Android应用代码中每个函数构造控制流程图(Control Flow Graph,CFG)。3)执行路径选择:在FCG和CFG中,针对关键的函数调用行为,利用搜索算法搜索所有可能到达关键函数的执行路径。4)应用执行控制:修改步骤3)选择的每条执行路径中的控制流条件,确保应用软件执行过程必然沿着选择的路径进行。5)异常容忍的动态执行:当应用的执行过程被控制和一些执行条件被修改,在运行过程中,必然会存在许多的执行异常。如果这些异常不被处理,应用软件将立即停止执行。为了保证选定路径的代码能够执行完,Android执行环境的异常处理逻辑被修改,即使出现错误,也继续从下一条指令进行执行。6)执行参数搜集:在应用执行过程中,对需要的参数进行搜集,用于进一步分析。进一步地,步骤1)通常需要对Android软件的代码进行反编译,转换为更容易理解的中间语言,如Jimple格式、Smali格式的代码语言。进一步地,步骤2)所述的函数调用图为:FCG中每个点代码一个函数,每条边代表函数之间的调用关系。一旦FCG被建立,函数之间的调用关系被描述。进一步地,步骤2)所述的控制流程图为:CFG中,每个点代表一个连续代码块,每条边代表可能的分支执行路径关系,比如if、switch等控制指令导致的分支。进一步地,步骤3)所述的执行路径选择的过程为:首先,根据一些选定的关键函数,通过搜索FCG上的路径,选出所有可能达到这些关键函数的调用序列;然后,针对每一条调用序列中函数的CFG,搜索所有触发关键函数相关的控制流条件,然后得到相应的路径。需要确保这些路径是无环的。进一步地,步骤4)中应用执行控制的过程为:修改Android软件的入口函数,运行时直接调转到步骤3)选择的执行路径。然后,修改路径上所有的执行流条件,保证关键函数最终必然会被调用。这一过程可以采用代码插装技术完成。这样,每一条路径将产生一个新的应用。进一步地,步骤5)中异常容忍的动态执行为:针对Java代码,通过修改Android源码,对Dalvik虚拟机执行环境中的异常处理过程进行修改,即使出现异常,也对其进行容忍,直接从下一条指令开始执行。针对C/C++代码,可以基于虚拟化技术利用类似的方法容忍异常或错误。进一步地,步骤6)中执行参数搜集过程为:根据不同的需要搜集的执行参数,在应用软件被执行时,对数据进行输出。比如针对服务器的URL数据,可以对所有的字符串数据进行输出,进一步进行区分。本专利技术还提供一种采用上述方法的实现了基于强制执行的Android应用软件测试系统,其包括:应用软件代码转换模块:为了分析Android应用,该模块首先将Android应用的Java代码转换为中间代码格式;静态代码分析模块:通过Soot构建应用代码的函数调用图和控制流程图,进一步基于这些图,利用深度优先搜索算法搜索可能到达关键函数的路径;代码插装模块:根据静态分析过程搜索的路径,采用代码插装技术,修改Android应用执行过程中的控制流条件,生成新的Android应用;异常容忍的沙盒执行模块:新生成的应用将在构造的沙盒中执行,该沙盒容忍所有执行过程中出现的异常,并提取应用程序的执行行为和参数。本专利技术的优点和积极效果如下:本专利技术通过结合静态和动态分析方法克服当前Android应用测试过程中存在的不足。首先,基于静态方法,关键行为相关的执行路径被确定。然后,通过控制应用的执行过程,限制应用的执行过程。并且,首次采用异常容忍的执行沙盒对Android应用执行过程中的异常进行容忍,保证关键行为一定被触发。这样,通过执行,能够提取一些静态方法无法提取的执行参数信息。同时,也克服动态方法无法有效触发应用行为的问题。通过对本文档来自技高网
...

【技术保护点】
一种基于强制执行的Android应用软件测试方法,其步骤包括:1)采用反编译工具将Android应用代码转换为中间语言;2)基于静态分析技术分析Android应用代码中的函数调用关系,构造函数调用图,并对每个函数中的代码执行过程构造函数控制流图;3)在函数调用图和函数控制流图中,针对关键的函数调用行为,搜索和选择可能到达关键函数的执行路径;4)根据步骤3)选择的每条执行路径修改应用软件中的控制流条件,确保应用必然沿着选择的路径进行执行;5)将执行流被控制的应用放入异常容忍的执行沙盒进行执行,即使出现异常,也继续从异常发生位置的下一条指令进行执行,保证选择的路径代码都被执行;6)在应用执行过程中,对执行参数进行搜集。

【技术特征摘要】
1.一种基于强制执行的Android应用软件测试方法,其步骤包括:1)采用反编译工具将Android应用代码转换为中间语言;2)基于静态分析技术分析Android应用代码中的函数调用关系,构造函数调用图,并对每个函数中的代码执行过程构造函数控制流图;3)在函数调用图和函数控制流图中,针对关键的函数调用行为,搜索和选择可能到达关键函数的执行路径;4)根据步骤3)选择的每条执行路径修改应用软件中的控制流条件,确保应用必然沿着选择的路径进行执行;5)将执行流被控制的应用放入异常容忍的执行沙盒进行执行,即使出现异常,也继续从异常发生位置的下一条指令进行执行,保证选择的路径代码都被执行;6)在应用执行过程中,对执行参数进行搜集。2.如权利要求1所述的方法,其特征在于,步骤1)将Android应用代码转换为Jimple格式或Smali格式的代码语言。3.如权利要求1所述的方法,其特征在于,步骤2)所述函数调用图是有向图,其中每个点代表一个函数,边代表函数之间的调用关系;所述函数控制流图代表单个函数内部的执行过程,每个点代表一个函数块,边代表可能的执行分支。4.如权利要求1所述的方法,其特征在于,步骤3)所述执行路径的选择过程为:首先,根据一些选定的关键函数,通过搜索函数调用图上的路径,选出所有可能达到这些关键函数的调用序列;然后,针对每一条调用序列中函数的函数控制流图,搜索所有触发关键函数相关的控制流条件,然后得到相应的路径。5.如权利要求1所述的方法,其特征在于,步骤4)根据每一条静态方法搜索出...

【专利技术属性】
技术研发人员:王蕊林子敏张道娟操晓春
申请(专利权)人:中国科学院信息工程研究所
类型:发明
国别省市:北京;11

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

1