[发明专利]一种Android系统中程序行为与界面操作映射方法有效
申请号: | 201210228718.7 | 申请日: | 2012-07-02 |
公开(公告)号: | CN103530221B | 公开(公告)日: | 2016-11-09 |
发明(设计)人: | 郑聪;朱诗雄;龚晓锐;丁羽;戴帅夫;邹维 | 申请(专利权)人: | 北京大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京君尚知识产权代理事务所(普通合伙) 11200 | 代理人: | 余长江 |
地址: | 100871 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 android 系统 程序 行为 界面 操作 映射 方法 | ||
技术领域
本发明涉及一种Android软件的映射方法,特别涉及一种Android系统中程序行为与界面操作的映射方法,属于软件分析与测试领域。
背景技术
随着智能手机的快速发展和普及,移动互联网已经通过大量的应用软件改变了人们在娱乐、社交和工作等方面的方式。Android系统的智能手机在移动互联网市场中占据了大量的市场份额,根据EnfoDesk易观智库的报告发布的《2011年第4季度中国移动终端市场季度监测》调研数据显示,2011年第四季中国市场Android系产品市场份额占整体智能机市场的68.4%。这最近一年中,Android应用软件数量以惊人的速度增长。据Google官方数据,Android应用软件下载量从2011年3月时的30亿增长到2011年12月时的100亿。此外,Google官方电子市场中的Android应用软件数量已于2012年3月初增长到45万。由于Android系统的开放性,使得除Google官方电子市场外还存在许多第三方的电子市场,例如AmazonAppstore和Samsung Apps,特别是在中国地区,第三方的电子市场数量多达100多家。
Android系统为用户提供了友好的UI,但这些UI会给开发者在软件测试时带来困难,自动化测试比较麻烦。另外,有些开发者把UI引入到他们编写的Android恶意软件中去,利用UI来躲避现在的Android恶意软件检测技术。例如:一个Android软件需要用户对某个界面上的特定按钮点击后才能触发某个行为。因此,无论是在测试还是安全检测方面,都很难自动化地点击到正确的按钮以此来触发出行为。在Android系统中,Activity是一个系统组件,用来显示每个界面的内容,并且让用户与之交互。目前,Android白盒测试技术,仅仅只能自动化地对当前Activity中的所有元素进行遍历,当需要测试由某个特定Activity中的UI控件所触发的行为时,需要测试人员手工编写测试脚本来完成。同样地,在Android软件恶意行为检测技术上,自动化地操作UI控件来触发相应的恶意行为也尤为困难,一个简单做法是生成随机用户事件来操作界面,但效率不到40%。这些困难的根本原因是,由于UI操作逻辑的复杂性,很难将程序行为映射到界面操作上去。
面对当前大量的Android软件,无论是在软件测试,还是在恶意软件检测领域,都非常有必要设计出一种Android软件的程序行为与界面操作的自动映射方法,来解决自动化软件测试和自动化恶意软件检测中的难题。
发明内容
鉴于以上的问题,本发明的目的是提供一种Android软件的程序行为与界面操作的映射方法,程序行为是需要界面操作来完成的。融合动态和静态分析技术,将程序行为自动化地映射到其对应的界面操作信息。
本发明是通过动态遍历的方法得到所有Activity的调用关系,以及Activity调用所需的用户操作信息。然后通过静态分析方法找到程序行为所对应的API,进一步逆向搜索函数调用关系获取可能的程序执行路径,针对每个执行路径,分析得到触发Activity。最后,我们在所有Activity的调用关系里找出可到达触发Activity的路径,因此我们能得到触发程序行为所需要的界面操作信息。
本发明提出一种Android系统中程序行为与界面操作映射方法,其步骤包括:
1)程序UI动态探测;
1-1)启动Android系统中待测软件,遍历该软件的一个主Activity组件上每个用户界面UI元素,保存并维持当前系统内存状态;
1-2)遍历该软件上所有Activity组件并记录Activity组件之间跳转关系和用户操作信息,反复此步骤;
1-3)根据遍历的所有Activity组件,以每个Activity为结点、每个具有Activity跳转关系和用户操作信息作为边,建立Activity调用图;
1-4)输出Activity调用图对应的界面操作信息;
2)程序UI静态探测;
2-1)对待测软件进行反汇编;
2-2)根据反汇编提取用户指定程序行为所对应的API函数调用路径;
2-3)从路径中提取出触发Activity组件,输出触发Activity组件所对应的界面操作信息;
3)根据Activity调用图和触发Activity组件,找出主Activity到所述触发Activity结点的路径,输出该路径的界面操作信息,完成映射。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京大学,未经北京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210228718.7/2.html,转载请声明来源钻瓜专利网。