CN104375938B - 安卓应用程序的动态行为监测方法及系统 - Google Patents

安卓应用程序的动态行为监测方法及系统 Download PDF

Info

Publication number
CN104375938B
CN104375938B CN201410670086.9A CN201410670086A CN104375938B CN 104375938 B CN104375938 B CN 104375938B CN 201410670086 A CN201410670086 A CN 201410670086A CN 104375938 B CN104375938 B CN 104375938B
Authority
CN
China
Prior art keywords
monitoring
mobile device
main frame
application program
measured
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.)
Active
Application number
CN201410670086.9A
Other languages
English (en)
Other versions
CN104375938A (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.)
China Academy of Information and Communications Technology CAICT
Original Assignee
China Academy of Telecommunications Research CATR
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 China Academy of Telecommunications Research CATR filed Critical China Academy of Telecommunications Research CATR
Priority to CN201410670086.9A priority Critical patent/CN104375938B/zh
Publication of CN104375938A publication Critical patent/CN104375938A/zh
Application granted granted Critical
Publication of CN104375938B publication Critical patent/CN104375938B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明提供了一种安卓应用程序的动态行为监测方法及系统,涉及安卓应用程序监测技术领域,方法包括监测主机在待测应用程序所需调用的敏感操作系统应用程序编程接口的代码处设置断点;移动设备在运行待测的应用程序时,若调用了敏感操作系统应用程序编程接口,则触发一断点事件;移动设备将断点事件发送给监测主机;监测主机向移动设备发送监测数据请求报文;移动设备向监测主机发送被移动设备调用的敏感操作系统应用程序编程接口的监测数据;监测主机将监测数据进行显示。本发明能够解决当前采用API HOOK技术或者应用重打包技术来进行动态行为分析造成的测试结果不准确,且安卓终端权限不允许和对相关系统功能的修改可能带来兼容性的问题。

Description

安卓应用程序的动态行为监测方法及系统
技术领域
本发明涉及安卓应用程序监测技术领域,尤其涉及一种安卓应用程序的动态行为监测方法及系统。
背景技术
动态行为分析是通过动态运行应用程序的方式对其行为进行建模的一类技术的统称。此类行为建模技术的特点是首先启动应用软件,监测其运行过程中执行的各种操作,最终得到的一系列监测记录。动态行为分析技术在代码性能优化、程序正确性验证以及软件安全检测等领域得到了广泛应用。
目前在对安卓应用程序进行安全性检测时,使用的动态行为分析技术一般有APIHOOK和应用重打包两种。其中,基于API HOOK技术的动态行为分析方法通过修改操作系统功能调用的入口点,将其指向由分析人员编写的一段自定义代码。当应用程序调用相关系统功能时,这段自定义的代码首先被执行,并记录有关的调用信息,例如调用时间、调用者进程的名称、调用栈的内容以及传递的参数值等,之后再返回到真正的系统功能代码中继续完成操作。基于应用重打包技术的动态行为分析方法通过逆向工程将应用的可执行文件还原成接近源代码的内容,对于其中的目标操作系统功能调用,在执行调用的代码前插入一段自定义的代码用于记录调用事件的相关信息,随后再将接近源代码的内容重新打包成可执行文件。在运行这个新的可执行文件时,插入的自定义代码将在系统功能调用之前运行,从而实现相关信息的记录。
可见,当前无论采用API HOOK技术或者应用重打包技术,均需要对应用程序或操作系统相关功能进行修改,造成测试对象发生变化,使得测试结果失去效力;另外,对相关系统功能进行修改需要root权限,而很多安卓终端均不开放此类权限;此外,对相关系统功能的修改可能带来兼容性问题。
发明内容
本发明的实施例提供一种安卓应用程序的动态行为监测方法及系统,以解决当前采用API HOOK技术或者应用重打包技术来进行动态行为分析造成的测试结果不准确,且安卓终端权限不允许和对相关系统功能的修改可能带来兼容性的问题。
为达到上述目的,本发明采用如下技术方案:
一种安卓应用程序的动态行为监测方法,包括:
监测主机在待测应用程序所需调用的敏感操作系统应用程序编程接口的代码处设置断点;
所述监测主机向移动设备发送监测命令报文;
在接收到所述监测命令报文后,移动设备在运行所述待测的应用程序时,若调用了所述敏感操作系统应用程序编程接口,则触发一断点事件;
所述移动设备暂停运行所述待测的应用程序,并将所述断点事件发送给所述监测主机;
所述监测主机在接收到所述断点事件后,向所述移动设备发送监测数据请求报文;
所述移动设备根据所述监测数据请求报文向所述监测主机发送被移动设备调用的所述敏感操作系统应用程序编程接口的监测数据;
所述监测主机将所述监测数据进行显示。
具体的,所述监测数据包括所述敏感操作系统应用程序编程接口的函数名、类名、待测的应用程序向敏感操作系统应用程序编程接口函数发送的参数值以及调用栈信息。
此外,在监测主机在待测应用程序所需调用的敏感操作系统应用程序编程接口的代码处设置断点之前,所述方法还包括:
所述移动设备运行所述待测的应用程序,并启动一Dalvik虚拟机进程;所述Dalvik虚拟机进程包括一调试线程,所述调试线程中记录有所述Dalvik虚拟机进程的身份标识;
所述移动设备建立所述调试线程与移动设备中的设备端代理的Socket连接;
所述移动设备通过所述设备端代理,将所述身份标识发送给所述监测主机。
进一步的,所述安卓应用程序的动态行为监测方法,还包括:
所述监测主机通过监测主机中的Dalvik调试管理库为所述身份标识对应的Dalvik虚拟机进程选择一个本地TCP端口作为本地调试端口;
所述监测主机建立所述本地TCP端口与所述调试线程的数据包转发连接。
另外,在所述监测主机将所述监测数据进行显示之后,所述方法还包括:
所述监测主机向所述移动设备发送应用程序继续运行指令;
所述移动设备在接收到所述应用程序继续运行指令后,控制被暂停的所述待测的应用程序继续运行。
一种安卓应用程序的动态行为监测系统,包括:通过USB接口连接的监控主机和移动设备;
其中,所述监测主机,用于在待测应用程序所需调用的敏感操作系统应用程序编程接口的代码处设置断点,并向移动设备发送监测命令报文;
所述移动设备,用于在运行所述待测的应用程序,且调用了所述敏感操作系统应用程序编程接口时,触发一断点事件;
所述移动设备,还用于暂停运行所述待测的应用程序,并将所述断点事件发送给所述监测主机;
所述监测主机,还用于在接收到所述断点事件后,向所述移动设备发送监测数据请求报文;
所述移动设备,还用于根据所述监测数据请求报文向所述监测主机发送被移动设备调用的所述敏感操作系统应用程序编程接口的监测数据;
所述监测主机,还用于将所述监测数据进行显示。
具体的,所述移动设备发送的监测数据包括所述敏感操作系统应用程序编程接口的函数名、类名、待测的应用程序向敏感操作系统应用程序编程接口函数发送的参数值以及调用栈信息。
进一步的,所述移动设备,还用于运行所述待测的应用程序,并启动一Dalvik虚拟机进程;所述Dalvik虚拟机进程包括一调试线程,所述调试线程中记录有所述Dalvik虚拟机进程的身份标识;建立所述调试线程与移动设备中的设备端代理的Socket连接,并通过所述设备端代理,将所述身份标识发送给所述监测主机。
进一步的,所述监测主机,还用于通过监测主机中的Dalvik调试管理库为所述身份标识对应的Dalvik虚拟机进程选择一个本地TCP端口作为本地调试端口;建立所述本地TCP端口与所述调试线程的数据包转发连接。
另外,所述监测主机还用于向所述移动设备发送应用程序继续运行指令;所述移动设备,还用于在接收到所述应用程序继续运行指令后,控制被暂停的所述待测的应用程序继续运行。
本发明实施例提供的安卓应用程序的动态行为监测方法及系统,监测主机在待测应用程序所需调用的敏感操作系统应用程序编程接口的代码处设置断点,向移动设备发送监测命令报文;在接收到所述监测命令报文后,移动设备在运行所述待测的应用程序时,若调用了所述敏感操作系统应用程序编程接口,则触发一断点事件;所述移动设备暂停运行所述待测的应用程序,并将所述断点事件发送给所述监测主机;所述监测主机在接收到所述断点事件后,向所述移动设备发送监测数据请求报文;所述移动设备根据所述监测数据请求报文向所述监测主机发送被移动设备调用的所述敏感操作系统应用程序编程接口的监测数据;所述监测主机将所述监测数据进行显示。可见,本发明采用通过监测主机,即PC端调试的方式来对应用程序进行监测,无需对应用程序相关系统功能进行修改,从而也不需要root权限,且这种PC端调试的方式在各种安卓设备的系统中能够兼容,兼容性较好。从而,本发明解决了当前采用APIHOOK技术或者应用重打包技术来进行动态行为分析造成的测试结果不准确,且安卓终端权限不允许和对相关系统功能的修改可能带来兼容性的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的安卓应用程序的动态行为监测方法的流程图一;
图2为本发明实施例提供的安卓应用程序的动态行为监测方法的流程图二;
图3为本发明实施例中的安卓应用程序的动态行为监测系统的示意图;
图4为本发明实施例提供的安卓应用程序的动态行为监测系统的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种安卓应用程序的动态行为监测方法,如图1所示,包括:
步骤101、监测主机在待测应用程序所需调用的敏感操作系统应用程序编程接口的代码处设置断点。
步骤102、监测主机向移动设备发送监测命令报文。
步骤103、在接收到监测命令报文后,移动设备在运行待测的应用程序时,若调用了敏感操作系统应用程序编程接口,则触发一断点事件。
步骤104、移动设备暂停运行待测的应用程序,并将断点事件发送给监测主机。
步骤105、监测主机在接收到断点事件后,向移动设备发送监测数据请求报文。
步骤106、移动设备根据监测数据请求报文向监测主机发送被移动设备调用的敏感操作系统应用程序编程接口的监测数据。
步骤107、监测主机将监测数据进行显示。
本发明实施例提供的安卓应用程序的动态行为监测方法,监测主机在待测应用程序所需调用的敏感操作系统应用程序编程接口的代码处设置断点,向移动设备发送监测命令报文;在接收到监测命令报文后,移动设备在运行待测的应用程序时,若调用了敏感操作系统应用程序编程接口,则触发一断点事件;移动设备暂停运行待测的应用程序,并将断点事件发送给监测主机;监测主机在接收到断点事件后,向移动设备发送监测数据请求报文;移动设备根据监测数据请求报文向监测主机发送被移动设备调用的敏感操作系统应用程序编程接口的监测数据;监测主机将监测数据进行显示。可见,本发明采用通过监测主机,即PC端调试的方式来对应用程序进行监测,无需对应用程序相关系统功能进行修改,从而也不需要root权限,且这种PC端调试的方式在各种安卓设备的系统中能够兼容,兼容性较好。从而,本发明解决了当前采用API HOOK技术或者应用重打包技术来进行动态行为分析造成的测试结果不准确,且安卓终端权限不允许和对相关系统功能的修改可能带来兼容性的问题。
值得说明的是,上述的监测数据包括敏感操作系统应用程序编程接口的函数名、类名、待测的应用程序向敏感操作系统应用程序编程接口函数发送的参数值以及调用栈信息。
为了便于本领域的技术人员更好的理解本发明,下面列举一个更为具体的实施例,如图2所示,本发明实施例提供一种安卓应用程序的动态行为监测方法,包括:
步骤201、移动设备运行待测的应用程序,并启动一Dalvik虚拟机进程。
其中,由于安卓系统的应用程序无法直接在处理器上运行,而是需要由Dalvik虚拟机来解释执行。一般在工程模式的安卓系统中,该Dalvik虚拟机进程中除了执行应用程序字节码的线程外,还可以额外启动一个调试线程,可以协助实现开发工具的应用调试功能。该调试线程启动后首先向终端设备的设备端代理注册。其中,该调试线程中记录有Dalvik虚拟机进程的身份标识。
步骤202、移动设备建立调试线程与移动设备中的设备端代理的Socket连接。
这样,该调试线程可以将上述的身份标识传输给该设备端代理。
其中,该设备端代理的作用有两种,一种是传输模式的转化。因为,标准的Java调试协议使用socket接口作为传输方式,而移动设备与监控主机之间则主要靠USB连接。设备端代理的一项重要作用就是借助USB传输接收从监控主机发来的报文并使用socket接口将其发送到调试线程,同时接收调试线程发来的socket数据并通过USB传输的方式发回到监控主机。另一种功能是应用列表管理,由于应用程序启动时调试线程会向设备端代理注册,而应用程序退出时也会关闭相应的socket连接,通过跟踪这些注册信息和连接信息,设备端代理能够动态维护一个当前正在运行的应用程序列表,并将其提供给监控主机侧的动态行为分析工具使用。
步骤203、移动设备通过设备端代理,将身份标识发送给监测主机。
其中,移动设备与该监测主机通过USB接口连接。其中,该监测主机中设置有个人计算机代理(即PC端代理)和Dalvik调试管理库。将身份标识发送给监测主机是通过USB连接将其传输给PC端代理,PC端代理又将该事件通知给Dalvik调试管理库。
此处的PC端代理的作用为传输模式转换的作用,即在socket传输与USB传输之间进行透明转换。
而此处的Dalvik调试管理库的作用是通过PC端代理与设备端代理进行通信,获取移动设备当前正在运行的进程列表,为其中每个进程分配本地socket端口,并将进程列表信息和socket端口信息提供给监测主机中的动态行为分析工具。另外,每当移动设备启动新的应用程序、或者当前运行的应用程序退出运行时,Dalvik调试管理库会从PC端代理处收到通知,并将相关通知信息传递给动态行为分析工具,从而使动态行为分析工具能够动态跟踪移动设备上运行的全部应用程序。
步骤204、监测主机通过监测主机中的Dalvik调试管理库为身份标识对应的Dalvik虚拟机进程选择一个本地TCP端口作为本地调试端口。
步骤205、监测主机建立本地TCP端口与移动设备上调试线程的数据包转发连接。
这样,监测主机发送的监测命令报文即可通过该数据包转发连接来传输。
步骤206、监测主机在待测应用程序所需调用的敏感操作系统应用程序编程接口的代码处设置断点。
步骤207、监测主机通过本地TCP端口向移动设备的调试线程发送监测命令报文。
步骤208、在接收到监测命令报文后,移动设备在运行待测的应用程序时,若应用程序调用了敏感操作系统应用程序编程接口,则触发一断点事件。
步骤209、移动设备暂停运行待测的应用程序,并将断点事件发送给监测主机。
具体的,是通过Dalvik虚拟机来暂停运行待测的应用程序的。
而断点事件通过USB接口到达监测主机,并传输到监测主机的JDI(Java DebugInterface)调试库,并最终到达监测主机中的动态行为分析工具中。
其中,JDI调试库是动态行为分析工具与Java调试传输层协议之间的接口,用于完成底层调试协议报文与上层Java对象和函数调用之间的相互转换。
步骤210、监测主机在接收到断点事件后,通过调用JDI调试库中相关类和函数向监测主机的本地TCP端口发送监测数据请求报文,从而通过数据包转发连接到达移动设备上。
步骤211、移动设备根据监测数据请求报文向监测主机发送被应用程序调用的敏感操作系统应用程序编程接口的监测数据。
步骤212、监测主机将监测数据进行显示。
其中,该监测数据可以包括敏感操作系统应用程序编程接口的函数名、类名、待测的应用程序向敏感操作系统应用程序编程接口函数发送的参数值以及调用栈信息等。该监测数据含有大量的软件底层信息,因此在对其进行显示时,可以将这些信息重新整理(例如将多个字符串进行拼接),以方便分析人员查看。
步骤213、监测主机向移动设备发送应用程序继续运行指令。
步骤214、移动设备在接收到应用程序继续运行指令后,控制被暂停的待测的应用程序继续运行。在步骤214之后,可以返回继续执行步骤208。
上述如图2所示的方法应用于一种安卓应用程序的动态行为监测系统,如图3所示,所述监测系统包括通过USB接口31连接的监控主机32和移动设备33。
所述移动设备33包括:启动有调试线程的Dalvik虚拟机34、设备端代理35。所述监测主机32包括:PC端代理36、Dalvik调试管理库37、JDI调试库38以及动态行为分析工具39。上述各部分的功能可以参见图2的方法实例,此处不再赘述。
下面列举一个对某应用程序中发送短信的行为进行监测的过程,包括:
启动动态行为分析工具。该动态行为分析工具启动后,调用Android软件开发包(SDK)自带的ddmlib.jar(即Dalvik调试管理库)的AndroidDebugBridge.init()和AndroidDebugBridge.createBridge()函数,对ddmlib.jar进行初始化。
ddmlib.jar在初始化过程中,通过socket连接到adb server(即PC端代理)监听的5037本地端口上,并使用该socket连接,借助adb server的转发功能向adbd(即设备端代理)发送track-jdwp命令。这样每当移动设备有Dalvik虚拟机进程启动或退出时,ddmlib.jar都会通过该连接收到相应的启动或者退出的通知。
启动待测试的应用程序。此时,安卓系统将启动一个新的Dalvik虚拟机进程,其中除了用于执行应用程序字节码的线程外,还包含一个JDWP线程(即调试线程)。该JDWP线程连接到adbd创建的名为@vm-debug-control的socket上,将本进程的身份标识(例如身份标识为3721)发送给adbd。
adbd收到JDWP线程发来的进程的身份标识后,通过USB连接将其传输给adbserver,adb server又将该事件通知给ddmlib.jar。
ddmlib.jar通过与adb server之间的socket连接向adbd发送jdwp:3721命令,从而在逻辑上透过USB转发连接到移动设备端的JDWP线程。
ddmlib.jar选择一个本地TCP端口(例如本地TCP端口为8600端口)作为本地调试端口,并在在该端口与ddmlib.jar和adb server已建立的socket之间进行数据包转发。此后所有发往8600端口的调试报文都将被透明地转发到设备端的JDWP线程,而JDWP线程亦能向PC端8600端口发回调试结果。
动态行为分析工具使用Java开发工具包(JDK)自带的tools.jar(即JDI调试库)的SocketAttachingConnector连接到本地8600端口上,实现对待测试移动应用的调试控制。接下来,工具创建一个MethodEntryRequest请求,将该请求的类过滤器设置为“android.telephony.SmsManager”,随后启用该请求。
动态行为分析工具循环读取tools.jar创建的调试事件队列。若读出MethodEntryEvent事件,继续判断是否为android.telephony.SmsManager类的sendTextMessage()函数触发该事件。
若前述MethodEntryEvent调试事件确属sendTextMessage()函数触发,动态行为分析工具则调用tools.jar的相应方法读取待测试移动应用的上下文数据,包括但不限于被调用应用程序编程接口(Application Programming Interface,简称API)的函数名和类名、应用向该函数传递的参数值以及调用栈信息等,将该函数名和类名、应用向该函数传递的参数值以及调用栈信息等在调整格式后显示在工具的用户界面上。
动态行为分析工具调用tools.jar的VirtualMachine.resume()函数,继续待测试移动应用的运行。
对应于上述图1和图2的安卓应用程序的动态行为监测方法的实施例,本发明还提供一种安卓应用程序的动态行为监测系统,如图4所示,包括:通过USB接口31连接的监控主机32和移动设备33。
其中,监测主机32,可以在待测应用程序所需调用的敏感操作系统应用程序编程接口的代码处设置断点,并向移动设备33发送监测命令报文。
移动设备33,可以在运行待测的应用程序,且应用程序调用了敏感操作系统应用程序编程接口时,触发一断点事件。
移动设备33,还可以暂停运行待测的应用程序,并将断点事件发送给监测主机32。
监测主机32,还可以在接收到断点事件后,向移动设备33发送监测数据请求报文。
移动设备33,还可以根据监测数据请求报文向监测主机32发送被移动设备33的应用程序调用的敏感操作系统应用程序编程接口的监测数据。
监测主机32,还可以将监测数据进行显示。
具体的,移动设备33发送的监测数据包括敏感操作系统应用程序编程接口的函数名、类名、待测的应用程序向敏感操作系统应用程序编程接口函数发送的参数值以及调用栈信息。
进一步的,移动设备33,还可以运行待测的应用程序,并启动一Dalvik虚拟机进程;Dalvik虚拟机进程包括一调试线程,调试线程中记录有Dalvik虚拟机进程的身份标识;建立调试线程与移动设备33中的设备端代理的Socket连接,并通过设备端代理,将身份标识发送给监测主机32。
进一步的,监测主机32,还可以通过监测主机32中的Dalvik调试管理库为身份标识对应的Dalvik虚拟机进程选择一个本地TCP端口作为本地调试端口;建立本地TCP端口与调试线程的数据包转发连接。
另外,监测主机32还可以向移动设备33发送应用程序继续运行指令。
移动设备33,还可以在接收到应用程序继续运行指令后,控制被暂停的待测的应用程序继续运行。
值得说明的是,本发明实施例提供的安卓应用程序的动态行为监测系统的具体实现方式可以参见图1和图2对应的方法实施例,此处不再赘述。
本发明实施例提供的安卓应用程序的动态行为监测系统,监测主机在待测应用程序所需调用的敏感操作系统应用程序编程接口的代码处设置断点,向移动设备发送监测命令报文;在接收到所述监测命令报文后,移动设备在运行所述待测的应用程序时,若调用了所述敏感操作系统应用程序编程接口,则触发一断点事件;所述移动设备暂停运行所述待测的应用程序,并将所述断点事件发送给所述监测主机;所述监测主机在接收到所述断点事件后,向所述移动设备发送监测数据请求报文;所述移动设备根据所述监测数据请求报文向所述监测主机发送被移动设备调用的所述敏感操作系统应用程序编程接口的监测数据;所述监测主机将所述监测数据进行显示。可见,本发明采用通过监测主机,即PC端调试的方式来对应用程序进行监测,无需对应用程序相关系统功能进行修改,从而也不需要root权限,且这种PC端调试的方式在各种安卓设备的系统中能够兼容,兼容性较好。从而,本发明解决了当前采用API HOOK技术或者应用重打包技术来进行动态行为分析造成的测试结果不准确,且安卓终端权限不允许和对相关系统功能的修改可能带来兼容性的问题。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (8)

1.一种安卓应用程序的动态行为监测方法,其特征在于,包括:
监测主机在待测应用程序所需调用的敏感操作系统应用程序编程接口的代码处设置断点;
所述监测主机向移动设备发送监测命令报文;
在接收到所述监测命令报文后,移动设备在运行所述待测的应用程序时,若调用了所述敏感操作系统应用程序编程接口,则触发一断点事件;
所述移动设备暂停运行所述待测的应用程序,并将所述断点事件发送给所述监测主机;
所述监测主机在接收到所述断点事件后,向所述移动设备发送监测数据请求报文;
所述移动设备根据所述监测数据请求报文向所述监测主机发送被移动设备调用的所述敏感操作系统应用程序编程接口的监测数据;
所述监测主机将所述监测数据进行显示;
在监测主机在待测应用程序所需调用的敏感操作系统应用程序编程接口的代码处设置断点之前,所述方法还包括:
所述移动设备运行所述待测的应用程序,并启动一Dalvik虚拟机进程;所述Dalvik虚拟机进程包括一调试线程,所述调试线程中记录有所述Dalvik虚拟机进程的身份标识;
所述移动设备建立所述调试线程与移动设备中的设备端代理的Socket连接;
所述移动设备通过所述设备端代理,将所述身份标识发送给所述监测主机。
2.根据权利要求1所述的动态行为监测方法,其特征在于,所述监测数据包括所述敏感操作系统应用程序编程接口的函数名、类名、待测的应用程序向敏感操作系统应用程序编程接口函数发送的参数值以及调用栈信息。
3.根据权利要求1所述的动态行为监测方法,其特征在于,还包括:
所述监测主机通过监测主机中的Dalvik调试管理库为所述身份标识对应的Dalvik虚拟机进程选择一个本地TCP端口作为本地调试端口;
所述监测主机建立所述本地TCP端口与所述调试线程的数据包转发连接。
4.根据权利要求3所述的动态行为监测方法,其特征在于,在所述监测主机将所述监测数据进行显示之后,所述方法还包括:
所述监测主机向所述移动设备发送应用程序继续运行指令;
所述移动设备在接收到所述应用程序继续运行指令后,控制被暂停的所述待测的应用程序继续运行。
5.一种安卓应用程序的动态行为监测系统,其特征在于,包括:通过USB接口连接的监测主机和移动设备;其中,
所述监测主机,用于在待测应用程序所需调用的敏感操作系统应用程序编程接口的代码处设置断点,并向移动设备发送监测命令报文;
所述移动设备,用于在运行所述待测的应用程序,且调用了所述敏感操作系统应用程序编程接口时,触发一断点事件;
所述移动设备,还用于暂停运行所述待测的应用程序,并将所述断点事件发送给所述监测主机;
所述监测主机,还用于在接收到所述断点事件后,向所述移动设备发送监测数据请求报文;
所述移动设备,还用于根据所述监测数据请求报文向所述监测主机发送被移动设备调用的所述敏感操作系统应用程序编程接口的监测数据;
所述监测主机,还用于将所述监测数据进行显示;
所述移动设备,还用于运行所述待测的应用程序,并启动一Dalvik虚拟机进程;所述Dalvik虚拟机进程包括一调试线程,所述调试线程中记录有所述Dalvik虚拟机进程的身份标识;建立所述调试线程与移动设备中的设备端代理的Socket连接,并通过所述设备端代理,将所述身份标识发送给所述监测主机。
6.根据权利要求5所述的动态行为监测系统,其特征在于,所述移动设备发送的监测数据包括所述敏感操作系统应用程序编程接口的函数名、类名、待测的应用程序向敏感操作系统应用程序编程接口函数发送的参数值以及调用栈信息。
7.根据权利要求5所述的动态行为监测系统,其特征在于,所述监测主机,还用于通过监测主机中的Dalvik调试管理库为所述身份标识对应的Dalvik虚拟机进程选择一个本地TCP端口作为本地调试端口;建立所述本地TCP端口与所述调试线程的数据包转发连接。
8.根据权利要求7所述的动态行为监测系统,其特征在于,所述监测主机还用于向所述移动设备发送应用程序继续运行指令;
所述移动设备,还用于在接收到所述应用程序继续运行指令后,控制被暂停的所述待测的应用程序继续运行。
CN201410670086.9A 2014-11-20 2014-11-20 安卓应用程序的动态行为监测方法及系统 Active CN104375938B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410670086.9A CN104375938B (zh) 2014-11-20 2014-11-20 安卓应用程序的动态行为监测方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410670086.9A CN104375938B (zh) 2014-11-20 2014-11-20 安卓应用程序的动态行为监测方法及系统

Publications (2)

Publication Number Publication Date
CN104375938A CN104375938A (zh) 2015-02-25
CN104375938B true CN104375938B (zh) 2017-09-05

Family

ID=52554873

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410670086.9A Active CN104375938B (zh) 2014-11-20 2014-11-20 安卓应用程序的动态行为监测方法及系统

Country Status (1)

Country Link
CN (1) CN104375938B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106156611A (zh) * 2015-03-25 2016-11-23 北京奇虎科技有限公司 智能手机应用程序的动态分析方法及系统
CN106469089A (zh) * 2015-08-21 2017-03-01 百度在线网络技术(北京)有限公司 用于使得终端上的非系统应用实现系统级别接口调用的方法及装置、终端
CN107273118A (zh) * 2017-05-31 2017-10-20 湖南机友科技有限公司 一种应用程序多开的实现方法及装置
CN109271786A (zh) * 2017-07-18 2019-01-25 中国电信股份有限公司 动态信息获取方法和装置
CN108446224B (zh) * 2018-03-06 2021-12-28 福建天泉教育科技有限公司 移动端上应用程序的性能分析方法、存储介质
CN109753420B (zh) * 2018-12-29 2023-01-24 深圳市思迪信息技术股份有限公司 监控数据的采集方法及装置
CN110309661B (zh) * 2019-04-19 2021-07-16 中国科学院信息工程研究所 一种基于控制流的敏感数据使用权限管理方法及装置
CN111046387A (zh) * 2019-12-05 2020-04-21 深圳市任子行科技开发有限公司 一种针对app上传用户信息的分析检测方法及系统
CN113656251A (zh) * 2021-08-20 2021-11-16 中金金融认证中心有限公司 监控应用程序行为的方法及其相关产品
CN117940907A (zh) * 2021-09-26 2024-04-26 西门子(中国)有限公司 应用程序监控方法、装置及可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102598017A (zh) * 2009-11-13 2012-07-18 埃德图加拿大公司 保护Java字节码代码免受恶意运行环境中的静态和动态攻击的系统和方法
CN102810143A (zh) * 2012-04-28 2012-12-05 天津大学 基于Android平台手机应用程序的安全检测系统及方法
CN103186740A (zh) * 2011-12-27 2013-07-03 北京大学 一种Android恶意软件的自动化检测方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7992137B2 (en) * 2007-07-30 2011-08-02 Nvidia Corporation Client server system for analysis and performance tuning of remote graphics devices
US8589885B2 (en) * 2010-09-30 2013-11-19 Microsoft Corporation Debugger launch and attach on compute clusters
CN102647409B (zh) * 2012-01-13 2015-02-11 哈尔滨工业大学 基于Android智能手机的应用程序行为状态转换模式识别方法
CN104008338B (zh) * 2014-05-08 2017-06-27 北京金山安全软件有限公司 一种Android恶意程序处理方法、装置及设备
CN104036188B (zh) * 2014-05-08 2017-05-24 北京金山安全软件有限公司 一种Android恶意程序检测方法、装置及设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102598017A (zh) * 2009-11-13 2012-07-18 埃德图加拿大公司 保护Java字节码代码免受恶意运行环境中的静态和动态攻击的系统和方法
CN103186740A (zh) * 2011-12-27 2013-07-03 北京大学 一种Android恶意软件的自动化检测方法
CN102810143A (zh) * 2012-04-28 2012-12-05 天津大学 基于Android平台手机应用程序的安全检测系统及方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Android软件动态行为监测系统的设计和实现;吕晓庆;《中国优秀硕士学位论文全文数据库 信息科技辑》;20131115(第11期);论文第2.1节、第2.2节、第3.1节、第3.2节、第4.1节,以及图2-1、2-2、4-1 *
面向Android软件动态行为监测的UI自动化触发与测试方法;彭国军;《保密科学技术》;20141010(第10期);文章第2-4节,以及图1-4 *

Also Published As

Publication number Publication date
CN104375938A (zh) 2015-02-25

Similar Documents

Publication Publication Date Title
CN104375938B (zh) 安卓应用程序的动态行为监测方法及系统
US7512934B2 (en) Parallel debugger
US8756577B2 (en) Collaborative software debugging in a distributed system with private debug sessions
US7984332B2 (en) Distributed system checker
US20050223362A1 (en) Methods and systems for performing unit testing across multiple virtual machines
Kothari et al. Deriving state machines from TinyOS programs using symbolic execution
CN106557413A (zh) 基于代码覆盖率获取测试用例的方法和设备
CN104731566B (zh) 集成开发环境测试装置、方法及系统
US10725893B2 (en) System and method for determination of code coverage for software applications in a network environment
Nguyen et al. An observe-model-exercise paradigm to test event-driven systems with undetermined input spaces
US10725889B2 (en) Testing multi-threaded applications
CN108182359A (zh) 一种测试可信环境下api安全性的方法、装置及存储介质
Gotovos et al. Test-driven development of concurrent programs using concuerror
Devai et al. UML Model Execution via Code Generation.
CN103699485B (zh) 应用程序调试方法和装置
Nguyen et al. Insight: In-situ online service failure path inference in production computing infrastructures
CN103176903B (zh) MapReduce分布式系统程序的测试方法及设备
US9841960B2 (en) Dynamic provision of debuggable program code
Suminto et al. Towards {Pre-Deployment} Detection of Performance Failures in Cloud Distributed Systems
CN104978227B (zh) 一种进程控制方法、装置,及系统
Endo Model based testing of service oriented applications
Franke et al. Androlift: A tool for android application life cycles
Weiss et al. Automated integration tests for mobile applications in java 2 micro edition
Artho et al. Model-based testing of the Java network API
Memon Employing user profiles to test a new version of a GUI component in its context of use

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20211223

Address after: 100191 No. 40, Haidian District, Beijing, Xueyuan Road

Patentee after: CHINA ACADEMY OF INFORMATION AND COMMUNICATIONS

Address before: 100191 No. 52 Garden North Road, Beijing, Haidian District

Patentee before: CHINA ACADEME OF TELECOMMUNICATION RESEARCH OF MIIT