摘要:
随着移动互联网向教育、支付、交通、医疗等领域逐渐渗透,移动应用在人们生活、学习和工作中的作用也越来越重要。Android的设备普及和系统开放性等因素使得Android应用程序成为开发数量最多的移动应用。为保证Android应用程序的安全性和健壮性,针对Android应用程序安全分析和测试方法的研究在学术界和工业界迅速发展。由于Android应用程序一般属于GUI(图形用户界面)程序,因此面向Android应用程序GUI的分析和测试方法成为研究热点,其中针对GUI的动态分析和测试方法大部分都对Android应用程序GUI进行遍历,如通过动态探测应用程序GUI发现程序缺陷的GUI测试方法,通过遍历应用GUI检测程序隐私泄露、恶意功能及敏感行为的动态安全分析方法,通过遍历应用程序GUI测试设备和屏幕兼容性的遍历测试方法。 自动化技术和较高的界面覆盖率可以提高上述基于GUI的动态测试和安全分析方法的效率和效果。然而已有的方法和技术仍不能充分满足自动化和覆盖率方面的要求,存在的问题主要包括,需要编写脚本使得自动化程度不高,需先通过静态分析技术构建Activity转换图使得过程复杂且需要程序源码,基于Activity组件建立的遍历模型难以到达充分地遍历。针对这些问题,本文提出了一种在不需要程序源码的情况下遍历Android应用程序GUI的自动化方法。 该方法的主要思想是通过模拟用户和应用的交互行为达到自动遍历Android应用GUI的目的。方法主要包含,解析Android应用配置文件获取应用程序包含的Activity组件信息,提取应用程序目标窗口上的控件信息并根据这些控件生成相应的用户动作,模拟用户行为,设计GUI遍历算法以及构建遍历模型。使用本方法进行GUI遍历会得到以界面截图的方式记录的执行路径。 为验证方法的可行性和有效性,本文实现了一个原型工具,并使用该工具对九个流行的Android应用程序进行实验。结果显示,在不需要程序源码的情况下,该工具可以自动安装、启动应用程序并对应用程序界面进行自动遍历,而且能够获得较好的遍历效果,九个被测应用程序获得了42.05%-61.29%的Activity覆盖率,这表明本文方法在提高Android应用程序GUI遍历自动化程度和界面覆盖率方面具有可行性和有效性。
展开