论文部分内容阅读
Android应用软件具有事件驱动特性,主要通过GUI(图形用户界面)与用户进行交互。为了保证Android应用软件的可靠性和安全性,需要对其进行分析与检测,而对GUI进行遍历是其中的关键。目前,Android应用程序的分析与检测方法主要分为静态方法和动态方法。静态方法难以适应真实环境要求,分析结果的准确率较低,且有一定的误报率而动态方法的测试覆盖率较低,测试结果有时无法达到预期的效果。本文提出了一种基于静态分析的Android动态检测方法,在对应用程序数据流进行静态分析的基础上,构建应用程序活动转换图和函数调用图。通过遍历应用程序活动转换图图和函数调用图,模拟用户事件遍历应用程序。本文的主要工作和特色如下:(1)提出结合动静态分析的Android程序测试方法。利用静态分析的方法反编译程序安装文件,提取Android manifest.xml中的Activity注册信息,反汇编程序代码构建活动转换图。在静态分析程序数据流获取函数调用图之后,利用正则表达式精简得到仅与控件及监视器相关的函数调用图。(2)提出了基于应用程序活动转换图和函数调用图的GUI遍历方法。结合应用程序数据流,模拟用户事件和动作遍历GUI控件。(3)利用UiAutomator编写测试脚本遍历应用程序。充分利用UiAutomator良好的耦合性,模拟Android原生事件,动态运行、监控应用程序遍历程序Activity上的GUI元素。(4)通过实验验证本文提出的方法的有效性和适用性。利用本文提出的方法对Android应用程序进行测试,编写测试脚本遍历应用程序。实验证明本文提出的方法能够提高Activity覆盖率和GUI覆盖率,这种基于遍历的方法可以发现程序的敏感行为。通过对Android程序GUI测试研究,提高GUI测试覆盖率,可以帮助开发者提高测试效率和程序代码质量。在程序动态安全性方面,本文提出的方法在测试应用程序时产生的日志和测试报告可以为研究人员进行安全隐私方面分析,有助于提高应用程序的安全性。