论文部分内容阅读
为了保护智能手机免受恶意代码的攻击,学术界在Android恶意代码检测方面进行了大量的研究,所采用的技术大体上可以分为静态分析和动态分析两个方面。控制流程图是静态分析中的一个重要组成部分,本文主要研究如何构建Android应用程序的控制流程图。由于Android是一个基于事件和框架的系统,应用程序中存在着大量的隐式调用,这是静态分析工具构建控制流程图过程中面临的一个比较大的挑战。目前的静态分析工具只是对一些比较流行的隐式调用进行建模(如生命周期回调方法),我们发现这种做法是不充分的,恶意软件可以通过不流行的隐式控制流绕过软件检测。本文主要结合工具EdgeMiner提供的Android“框架层”中隐式调用的API总结,利用过程内后向数据流分析技术,提取Android"应用层”中所有与回调方法相关的隐式调用。结合应用程序中的显式控制流和其他的隐式控制流,我们开发出了一款比较精确的,可扩展的原型工具用来构建Android应用程序的控制流程图。本文的主要工作和贡献有:(1)提出了一种自动化分析Android应用程序中与回调方法相关的隐式调用方法,该方法根据“框架层”中隐式调用关系来提取Android "应用层”中隐式调用,克服了现有方法在提取隐式控制流上的不足。(2)实现了一个轻量级的控制流程图构建工具,对每一个给定的应用程序,可以为其构建精确的控制流程图,包括传统的过程内控制流程图、过程间显式控制流程图和过程间隐式控制流程图。该工具使用Python语言开发,生成的控制流程图可应用于后续更加精确的静态分析,如数据流分析。(3)在Google Play上的200个(10个分类)免费热门Android应用软件上进行了实验,验证了该工具的有效性。与当前比较著名的静态分析工具FlowDroid和Amandroid作对比,本文的工具可以发现更多的隐式控制调用关系。对于给定的Android应用程序,在有了精确的控制流程图的基础上,研究人员可以完成后续的静态分析工作。由于控制流程图的准确性得到了提高,它也会提升后续静态分析的精确性。