一种测试Android应用程序的方法和装置的制造方法_2

文档序号:8339506阅读:来源:国知局
>[0028]Android应用程序所使用的编程语言是Java语言,并运行Dalvik VM中。本发明的一个实施例通过在在Dalvik VM上增加监控模块,对程序运行过程进行监控。一个Android应用程序运行在相应的一个Dalvik虚拟机实例里,一个虚拟机实例是一个独立的进程空间,因此为使监控模块对每个进程进行监控,本发明的实施例将监控模块附加到Zygote进程上。
[0029]Zygote进程是一个特殊的虚拟机进程,同时也是一个虚拟机实例的孵化器,每当要执行一个An droid应用程序时,Zygote使用fork函数创建出一个子进程来执行该应用程序。Zygote进程完成虚拟机的初始化、库的加载、预置类库的加载和初始化等操作,当需要一个新的虚拟机实例时,Zygote通过复制自身,最快速地提供一个进程模版。因此,当监控模块加载在Zygote进程上时,每一个新启动的APK程序都会在进程空间上拥有监控模块,由此保证监控的可靠性。
[0030]在APK程序执行过程中,解释器(Interpreter)是Dalvik虚拟机的执行引擎,它负责解释执行dex字节码(即Android程序源代码经过编译后最终产生的可运行的编码)。Dalvik的dex字节码中包括常量池(描述所有的常量,包括引用、方法名和数字常量等,以及类定义,包括访问权限标志,类名等),数据段(包括所有目标虚拟机执行的方法代码以及与类和方法相关的数据信息)和类实例变量等内容,这些信息使得监控模块能够细粒度地监控所有信息。在一个实施例中,在Dalvik dex字节码的解释执行过程中,利用监控模块,对命令调用进行策略匹配监控。例如,在匹配监控过程中,首先对应用程序进行监控,然后针对其具体的class进行监控分析,接下来在指令级别上进行过滤,获取和密码算法/协议使用相关的指令调用,最后通过从监控模块提取运行时数据来分析应用(例如分析加密行为)。在一个示例中,所述运行时数据是与密码算法和/或协议使用相关的参数。
[0031]图2是根据本发明实施例的测试Android应用程序的装置的结构示意图。如图2所示,测试Android应用程序的装置包括定位模块、监控模块、分析模块。其中,定位模块用于定位应用程序的命令调用,监控模块用于监控所述命令调用并获取运行时数据,分析模块用于对获取的运行时数据进行分析。在一个技术方案中,定位模块被配置成对应用程序进行静态代码反编译,获取类描述符;根据类描述符,定位方法调用。在一个技术方案中,定位模块被配置成定位和与密码算法和/或协议使用相关的命令调用。在一个技术方案中,所述监控模块被附加到Dalvik虚拟机的Zygote进程上,由此来监控所述命令调用并获取运行时数据。在一个技术方案中,所述运行时数据是与密码算法和/或协议使用相关的参数。在一个示例中,定位模块在应用程序的二进制代码中定位其命令调用。
[0032]通过以上实施方式的描述,本领域中的普通技术人员能够理解,在不偏离本发明的精神和范围的情况下,还可以对本发明的【具体实施方式】作各种变更和替换。这些变更和替换都落在本发明权利要求书所限定的范围内。
【主权项】
1.一种测试Android应用程序的方法,其特征在于,包括以下步骤: A:定位应用程序的命令调用, B:监控所述命令调用并获取运行时数据, C:对获取的运行时数据进行分析。
2.如权利要求1所述的方法,其特征在于,步骤A包括: 对应用程序进行静态代码反编译,获取类描述符; 根据类描述符,定位命令调用。
3.如权利要求2所述的方法,其特征在于,步骤A包括: 定位与密码算法和/或协议使用相关的命令调用。
4.如权利要求3所述的方法,其特征在于,步骤B包括: 利用被附加到Dalvik虚拟机的Zygote进程上的监控模块来监控所述命令调用并获取运行时数据。
5.如权利要求4所述的方法,其特征在于, 所述运行时数据是与密码算法和/或协议使用相关的参数。
6.如权利要求5所述的方法,其特征在于, 在步骤A中,在应用程序的二进制代码中定位其命令调用。
7.如权利要求6所述的方法,其特征在于, 所述命令调用是方法调用或者指令调用。
8.一种测试Android应用程序的装置,其特征在于,包括: 定位模块,用于定位应用程序的命令调用, 监控模块,用于监控所述命令调用并获取运行时数据, 分析模块,用于对获取的运行时数据进行分析。
9.如权利要求8所述的装置,其特征在于,定位模块被配置成: 对应用程序进行静态代码反编译,获取类描述符; 根据类描述符,定位命令调用。
10.如权利要求9所述的装置,其特征在于,定位模块被配置成: 定位与密码算法和/或协议使用相关的命令调用。
11.如权利要求10所述的装置,其特征在于, 所述监控模块被附加到Dalvik虚拟机的Zygote进程上,由此来监控所述命令调用并获取运行时数据。
12.如权利要求11所述的装置,其特征在于, 所述运行时数据是与密码算法和/或协议使用相关的参数。
13.如权利要求12所述的装置,其特征在于, 所述定位模块在应用程序的二进制代码中定位其命令调用。
14.如权利要求13所述的装置,其特征在于, 所述命令调用是方法调用或者指令调用。
【专利摘要】本发明公开一种测试Android应用程序的方法和装置。该方法包括以下步骤:A:定位应用程序的命令调用,B:监控所述命令调用并获取运行时数据,C:对获取的运行时数据进行分析。
【IPC分类】G06F11-36
【公开号】CN104657259
【申请号】CN201310598510
【发明人】柴洪峰, 杨文博, 何朔, 李卷孺, 杨阳, 徐泽伟
【申请人】中国银联股份有限公司
【公开日】2015年5月27日
【申请日】2013年11月22日
【公告号】WO2015074489A1
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1