CN103530221B - 一种Android系统中程序行为与界面操作映射方法 - Google Patents

一种Android系统中程序行为与界面操作映射方法 Download PDF

Info

Publication number
CN103530221B
CN103530221B CN201210228718.7A CN201210228718A CN103530221B CN 103530221 B CN103530221 B CN 103530221B CN 201210228718 A CN201210228718 A CN 201210228718A CN 103530221 B CN103530221 B CN 103530221B
Authority
CN
China
Prior art keywords
activity
interface operation
interface
program behavior
android system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201210228718.7A
Other languages
English (en)
Other versions
CN103530221A (zh
Inventor
郑聪
朱诗雄
龚晓锐
丁羽
戴帅夫
邹维
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Peking University
Original Assignee
Peking University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Peking University filed Critical Peking University
Priority to CN201210228718.7A priority Critical patent/CN103530221B/zh
Publication of CN103530221A publication Critical patent/CN103530221A/zh
Application granted granted Critical
Publication of CN103530221B publication Critical patent/CN103530221B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明涉及一种Android系统中程序行为与界面操作映射方法,其步骤包括:1)程序UI动态探测;2)程序行为静态探测;3)根据Activity调用图和触发Activity组件,找出主Activity到所述触发Activity结点的路径,输出该路径的界面操作信息,完成映射。本发明用动态探测的方法获取所有可能的界面跳转关系及所需要的界面操作信息,然后用静态分析的方法分析出与程序行为相关联的界面,因此,就可以从动态探测出的界面跳转关系中知道触发行为所需要经过的界面执行路径,以及执行这些路径所需要的界面操作信息,实现程序行为与界面操作的映射。

Description

一种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结点的路径,输出该路径的界面操作信息,完成映射。
遍历所述UI元素时,若触发新的Activity启动,则该Activity组件遍历结束后恢复系统内存。
遍历所述Activity组件时,产生新Activity,保存当前系统内存。
所述的保存当前系统内存状态,可通过dump方式把模拟器中的内存dump后写入到文件中,所述恢复系统内存,将内存dump文件重新加载到模拟器中。
所述遍历Activity组件上每个用户界面UI元素方法是:通过遍历当前Activity中的UI树,得到每个UI元素;再根据UI元素的类型,执行不同类型的用户操作。
所述反汇编使用APK工具得到待测软件的smali代码或Dalvik代码。
更进一步,所述的UI元素包括按钮、视图、适配器视图和组合按钮。
更进一步,所述用户操作信息包括:UI信息和用户操作类型;所述UI信息是指被操作的UI元素的坐标以及UI类型;所述用户操作类型,指上一次操作时的用户事件函数类型。
更进一步,所述从路径中提取出触发Activity组件的方法为:分析出所有可能执行到该API的函数调用路径,对每条路径上第一个函数进行分析,找出触发Activity。
更进一步,所述Activity组件之间跳转关系根据一个Activity结点跳转到另一个Activity结点及该两结点之间的边关系来决定。
与现有技术相比,本发明的积极效果为:
本发明能够自动化地获取与某一个行为对应的界面操作信息,现有的技术只能人工手动地去分析后得到,或者通过成功率很低的随机测试方法来得到。本发明用动态探测的方法获取所有可能的界面跳转关系及所需要的界面操作信息,然后用静态分析的方法分析出与程序行为相关联的界面,因此,就可以从动态探测出的界面跳转关系中知道触发行为所需要经过的界面执行路径,以及执行这些路径所需要的界面操作信息。本发明为现有的Android软件测试技术和Android恶意软件检测技术提供了有力的支持。
附图说明
图1是本发明Android系统中程序行为与界面操作映射方法的架构图;
图2 Android系统中程序行为与界面操作映射方法动态探测方法的逻辑流程图;
图3 Android系统中程序行为与界面操作映射方法动态探测方法静态分析方法的逻辑流程图;
图4 Android系统中程序行为与界面操作映射方法动态探测方法生成界面操作信息的逻辑流程图。
具体实施方式
本发明可至少包含三个部分:通过动态探测方法构造的动态探测器、通过静态探测方法构造的静态分析器和基于界面操作信息的界面操作信息生成器。动态探测器主要负责提取Activity之间的跳转关系和所需的用户操作信息。它在每个Activity上操作其所有的UI元素,若当前Activity跳转到另一个Activity,则能得到这两个Activity之间的跳转关系,以及产生这个跳转的界面操作信息。当动态遍历完所有的Activity之后,就能得到Activity调用图。静态分析器主要是对Android软件进行反汇编后,获取程序行为所对应API的函数调用路径,每个函数调用路径上的第一个函数所属的Activity就是触发Activity。界面操作信息生成器在Activity调用图中选取所有从主Activity到触发Activity的Activity调用路径,输出每条路径及执行该路径所需要的用户操作信息。
以下参照附图对一种Android程序行为与界面操作自动映射方法及系统进行详细说明,但本发明不局限于下面的实施方式。
本发明的整体架构如图1所示,本发明从结构上主要包含三个部分:动态探测器、静态分析器和界面操作信息生成器。动态探测器是基于Android模拟器的,它修改了模拟器底层的代码,可以遍历和操作当前Activity中的每个UI元素。在动态探测器中安装Android软件并且只启动,然后开始遍历所有的Activity。为了节省遍历的时间开销,动态探测器会在开始遍历当前Activity的所有UI元素之前都会先保存内存状态,若操作一个UI元素后启动了新的Activity,则会将之前保存的内存恢复,接着操作下一个UI元素。最后,动态探测器将所分析到的所有Activity调用图发送给界面操作信息生成器。静态分析器利用APKtool工具将Android应用软件的APK文件反汇编后得到smali代码,然后从smali代码中找到与用户指定程序行为所对应的API,分析出所有可能执行到该API的函数调用路径。接着,对每条路径上的第一个函数进行分析,找出它所属于的Activity,即为触发Activity,并也发送给界面操作信息生成器。界面操作信息生成器从在Activity调用图中提取出从主Activity到触发Activity的所有Activity调用路径,最后输出这些调用路径,以及这些路径所代表的界面操作信息。
动态探测器的工作流程如图2所示,首先安装我们要测试或检测的Android软件并启动运行。然后,保存当前内存状态,即把当前系统内存dump到指定文件中去。接着取当前Activity的UI树,对UI树中的每个UI元素进行操作,执行它的所有用户事件函数。当操作完所有的UI元素后,并且发现已经遍历完所有Activity,动态探测器会停止探测,且输出Activity调用图到指定文件中。如果在操作完所有UI元素后且还未遍历完所有Activity,动态探测器会启动下一个Activity,接着按同样方法继续分析。当对UI元素进行操作时,发现有新的Activity生成,则记录下当前执行的用户操作信息,包括UI元素的坐标和用户操作类型,然后对内存状态进行恢复后操作下一个UI元素。
静态分析器的工作流程如图3所示,首先将Android软件进行反汇编后得到smali代码或者Dalvik代码,然后根据用户指定的程序行为找出所对应的API。为了得到执行该API所需经过的函数调用路径,我们在smali代码中提取出所有函数调用,然后再利用递归的方法找出该API的函数调用路径。对API的函数调用路径中的第一个函数进行分析,若其属于一个Activity的成员函数,那么这个Activity就为触发Activity。若其属于一个控件的事件函数,则分析该控件所绑定的Activity,即为触发Activity。最后,将触发Activity列表输出到指定文件中去。
界面操作信息生成器的工作流程如图4所示,首先从指定的文件中读取Activity调用图和触发Activity,然后应用图搜索算法(例如深度优先搜索算法),在Activity调用图中找出从主Activity到触发Activity的所有Activity调用路径。最后,把这些Activity调用路径上所代表的界面操作信息输出。
尽管为说明目的公开了本发明的具体实施例和附图,但是本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。本发明不应局限于本说明书最佳实施例和附图所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。

Claims (10)

1.一种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结点的路径,输出该路径的界面操作信息,完成映射。
2.如权利要求1所述的Android系统中程序行为与界面操作映射方法,其特征在于,遍历所述UI元素时,若触发新的Activity启动,则该Activity组件遍历结束后恢复系统内存。
3.如权利要求1所述的Android系统中程序行为与界面操作映射方法,其特征在于,遍历所述Activity组件时,产生新Activity,保存当前系统内存状态。
4.如权利要求2或3所述的Android系统中程序行为与界面操作映射方法,其特征在于,所述的保存当前系统内存状态,可通过dump方式把模拟器中的内存dump后写入到文件中,所述恢复系统内存是指将内存dump文件重新加载到模拟器中。
5.如权利要求1所述的Android系统中程序行为与界面操作映射方法,其特征在于,所述遍历Activity组件上每个用户界面UI元素方法是:通过遍历当前Activity中的UI树,得到每个UI元素;再根据UI元素的类型,执行不同类型的用户操作。
6.如权利要求1所述的Android系统中程序行为与界面操作映射方法,其特征在于,所述反汇编使用APK工具得到待测软件的smali代码或Dalvik代码。
7.如权利要求1所述的Android系统中程序行为与界面操作映射方法,其特征在于,所述的UI元素包括按钮、视图、适配器视图和组合按钮。
8.如权利要求1所述的Android系统中程序行为与界面操作映射方法,其特征在于,所述界面操作信息包括:UI信息和用户操作类型;所述UI信息是指被操作的UI元素的坐标以及UI类型;所述用户操作类型,指上一次操作时的用户事件函数类型。
9.如权利要求1所述的Android系统中程序行为与界面操作映射方法,其特征在于,所述从路径中提取出触发Activity组件的方法为:分析出所有可能执行到该API的函数调用路径,对每条路径上第一个函数进行分析,找出触发Activity。
10.如权利要求1所述的Android系统中程序行为与界面操作映射方法,其特征在于,所述Activity组件之间跳转关系根据一个Activity结点跳转到另一个Activity结点及该两结点之间的边关系来决定。
CN201210228718.7A 2012-07-02 2012-07-02 一种Android系统中程序行为与界面操作映射方法 Expired - Fee Related CN103530221B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210228718.7A CN103530221B (zh) 2012-07-02 2012-07-02 一种Android系统中程序行为与界面操作映射方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210228718.7A CN103530221B (zh) 2012-07-02 2012-07-02 一种Android系统中程序行为与界面操作映射方法

Publications (2)

Publication Number Publication Date
CN103530221A CN103530221A (zh) 2014-01-22
CN103530221B true CN103530221B (zh) 2016-11-09

Family

ID=49932251

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210228718.7A Expired - Fee Related CN103530221B (zh) 2012-07-02 2012-07-02 一种Android系统中程序行为与界面操作映射方法

Country Status (1)

Country Link
CN (1) CN103530221B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104035867B (zh) * 2014-06-04 2017-06-09 重庆泰凯科技有限公司 基于Android的应用功能遍历测试方法
CN105653441B (zh) * 2014-11-21 2018-05-22 中国科学院声学研究所 一种ui遍历测试方法与系统
CN104461900B (zh) * 2014-12-19 2018-08-10 北京奇虎科技有限公司 用户界面的测试方法、中控服务器、测试终端及系统
CN104714884A (zh) * 2015-01-05 2015-06-17 中山大学 一种检查web应用和Android应用一致性的方法
CN104780209A (zh) * 2015-04-07 2015-07-15 北京奇点机智信息技术有限公司 一种用于实现分享界面场景的便携式设备、服务器
CN105740144B (zh) * 2016-01-27 2018-11-23 浪潮(北京)电子信息产业有限公司 一种Android移动终端的自动化测试方法及系统
CN106126425B (zh) * 2016-06-30 2018-11-30 北京视觉世界科技有限公司 基于Android自动化测试框架的功能遍历方法及系统
CN106383869B (zh) * 2016-09-05 2021-02-19 Tcl科技集团股份有限公司 一种获取用户行为信息的方法及装置
CN106528412B (zh) * 2016-10-27 2019-01-08 南京大学 一种安卓应用的相关手势投放测试框架
US10489593B2 (en) * 2017-06-27 2019-11-26 Symantec Corporation Mitigation of malicious actions associated with graphical user interface elements
CN109634831A (zh) * 2017-10-09 2019-04-16 飞狐信息技术(天津)有限公司 一种Android应用程序GUI自动遍历测试方法及系统
CN109144860B (zh) * 2018-08-08 2022-01-14 北京云测信息技术有限公司 一种对控件对象的操作方法及终端设备
CN111240957B (zh) * 2019-11-27 2023-09-15 广东电网有限责任公司信息中心 Android应用的Activity关系图生成方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101853157A (zh) * 2010-05-14 2010-10-06 中国科学院软件研究所 一种应用软件gui对象自动识别方法
CN102360334A (zh) * 2011-10-17 2012-02-22 中国人民解放军信息工程大学 一种动静态结合的软件安全性测试方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090282289A1 (en) * 2008-05-06 2009-11-12 Microsoft Corporation Generation and evaluation of test cases for software validation and proofs

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101853157A (zh) * 2010-05-14 2010-10-06 中国科学院软件研究所 一种应用软件gui对象自动识别方法
CN102360334A (zh) * 2011-10-17 2012-02-22 中国人民解放军信息工程大学 一种动静态结合的软件安全性测试方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于Android智能手机的安全检测系统的研究与实现;刘泽衡;《中国优秀硕士学位论文全文数据库》;20120515;全文 *

Also Published As

Publication number Publication date
CN103530221A (zh) 2014-01-22

Similar Documents

Publication Publication Date Title
CN103530221B (zh) 一种Android系统中程序行为与界面操作映射方法
CN108304720B (zh) 一种基于机器学习的安卓恶意程序检测方法
CN103577324B (zh) 移动应用中隐私信息泄露的静态检测方法
US8978141B2 (en) System and method for detecting malicious software using malware trigger scenarios
CN102054149B (zh) 一种恶意代码行为特征提取方法
US10761963B2 (en) Object monitoring in code debugging
Gómez et al. Reproducing context-sensitive crashes of mobile apps using crowdsourced monitoring
Canfora et al. Acquiring and analyzing app metrics for effective mobile malware detection
CN102622536A (zh) 一种恶意代码捕获方法
US20150143521A1 (en) System and method for detecting malicious software using malware trigger scenarios in a modified computer environment
US9336126B1 (en) Client-side event logging for heterogeneous client environments
CN104834859A (zh) 一种Android应用中恶意行为的动态检测方法
CN103123605B (zh) 一种Android平台自动化集成测试方法和装置
CN107346284B (zh) 一种应用程序的检测方法及检测装置
US10198430B2 (en) Automated functional diagram generation
US9367428B2 (en) Transparent performance inference of whole software layers and context-sensitive performance debugging
CN111756575A (zh) 存储服务器的性能分析方法及装置、电子设备
US9317398B1 (en) Vendor and version independent browser driver
CN103729595A (zh) 一种Android应用程序隐私数据泄露离线检测方法
CN107015841B (zh) 一种程序编译的预处理方法及程序编译设备
CN107193732B (zh) 一种基于路径比对的校验函数定位方法
EP3195115A1 (en) Code development tool with multi-context intelligent assistance
CN105740144A (zh) 一种Android移动终端的自动化测试方法及系统
CN104462979A (zh) 一种应用程序的自动化动态检测方法及装置
CN103631573A (zh) 可迁移函数执行时间的获得方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20161109

Termination date: 20190702