当前位置: 首页 > 专利查询>南京大学专利>正文

一种针对安卓应用对传感器的能耗漏洞的分析与检测系统技术方案

技术编号:11740290 阅读:300 留言:0更新日期:2015-07-16 00:11
目前的安卓应用的传感器分析检测系统存在覆盖范围窄,效率低,分析检测结果不稳定等缺陷。为了解决以上问题,本发明专利技术提供了一种针对安卓应用对传感器的能耗漏洞的分析与检测系统,由安卓应用执行模块,传感器数据产生模块和传感器数据利用率分析模块构成,安卓应用执行模块分别和传感器数据产生模块和传感器数据利用率分析模块连接,并且所有的模块运行于验证可执行Java程序的JPF(Java Pathfinder)系统上。本发明专利技术提出的针对安卓应用对传感器的能耗漏洞的分析与检测系统,最后得到的诊断结果是正确的、高效的和稳定的,上述所有的过程都是自动化的,不需要用户的额外参与。

【技术实现步骤摘要】
一种针对安卓应用对传感器的能耗漏洞的分析与检测系统
本专利技术涉及安卓应用对传感器能耗漏洞的检测系统。
技术介绍
由于安卓移动操作系统是一个开源的平台,它吸引了众多的应用开发者,使得近年来安卓系统在移动设备市场中占据了极大的份额。为了实现丰富多彩的应用,智能手机都配备了各种各样的传感器。这些传感器通过感知用户当前的物理环境,从而为用户提供更加个性化的服务。但是另一方面,这些传感器会消耗大量的电量,从而极大地缩短智能手机的续航时间。因此,传感器采集到的数据应当被应用很好地利用,并对用户产生一定的益处。如果传感器数据的利用率过低,则说明相应的电量被浪费了,该应用存在着能耗漏洞。能耗漏洞的存在会造成较差的用户体验,并对安卓应用的进一步发展产生负面作用。目前传统的解决办法都只考虑产生相应的事件,包括普通事件和传感器事件,并不考虑传感器事件中所包含的数据。传统的工具在产生传感器事件时,会随机产生所需要的数据并将其附着在事件之中。这导致相应的处理函数中的许多与传感器数据相关的路径都无法被执行,即较低的路径覆盖率。这进一步造成应用无法到达一些与传感器数据相关的特定状态,从而漏报许多存在问题的状态。并且由于产生的数据的随机性,多次分析将会出现不一样的结果。这会极大地困扰用户,降低工具的稳定性和实用性。另一方面,传统的工具在处理传感器事件时,不论程序执行了哪一条路径,都只会转移到同一个新的状态。然而大多数应用都会根据传感器数据的不同而转移到不同的状态以实现智能化的服务,因此这些应用都无法被传统的工具分析。
技术实现思路
1、所要解决的技术问题:目前的安卓应用的传感器分析检测系统存在覆盖范围窄,效率低,分析检测结果不稳定。2、技术方案:为了解决以上问题,本专利技术提供了一种针对安卓应用对传感器的能耗漏洞的分析与检测系统,由安卓应用执行模块,传感器数据产生模块和传感器数据利用率分析模块构成,安卓应用执行模块分别和传感器数据产生模块和传感器数据利用率分析模块连接,并且所有的模块运行于验证可执行Java程序的JPF系统上。JPF的全称为JavaPathfinder。所述安卓应用执行模块是指解析得到应用的所有事件处理方法,产生模拟事件以激活相应的处理方法,并在事件处理结束后更新事件处理方法的集合,通过产生特定的事件序列,到达对应的程序状态。所述的传感器数据产生模块是指在将初始的数据范围的边界值传递给应用后,记录应用在处理对应的传感器事件过程中执行的所有的关键代码,并判断各个边界值对应的关键代码是否相同,如果相同且该数据范围大于一定的阈值,则将该数据范围划分为较小的范围,如果不同但该数据范围大于另一个较小的阈值,依然将其划分为较小的子范围。所述的传感器数据利用率分析模块是指利用动态染色技术标识定位出所有利用了传感器数据的方法调用,并记录其中对用户带来好处的方法调用,统计得到每次由传感器事件所触发的状态转移时的数据利用数,并通过比较所有的状态转移的利用数计算得到每次状态转移的相对传感器数据利用率。3、有益效果:本专利技术能分析并执行一个安卓应用,产生一系列的事件序列并传递给应用进行相应的处理,在产生传感器事件时,能够以较小的代价生成足够的数据以覆盖事件处理方法中与传感器数据相关的程序路径,并按照深度优先的方式遍历应用的状态空间,通过计算传感器数据利用率找到有问题的程序状态,最后得到的诊断结果是正确的、高效的和稳定的,上述所有的过程都是自动化的,不需要用户的额外参与。附图说明图1为本专利技术的安卓应用能耗问题诊断系统的结构图。图2为自动执行安卓应用的算法流程图。图3为自动生成传感器数据的算法流程图。图4为自动分析传感器数据利用率的算法流程图。具体实施方式为了更清楚的对专利技术进行说明,首先,对一些用词进行解释。安卓应用是指一个可以在安卓移动设备上的安装并运行的应用,当明确对之进行操作时特指这个应用的资源文件和字节码文件。Java应用是指一个可以在装有JVM的计算机上运行的由Java语言编写的应用。安卓应用的字节码是安卓应用的本质,它由若干个类文件组成,这些类中各自包含若干方法,这些类中的方法通过合作,共同实现特定的功能。安卓应用GUI部件是指应用在运行过程中能够显示在屏幕上的部分,从应用的资源文件中解析得到应用初始时刻的GUI部件,当应用运行后,GUI部件可能会动态变化。安卓应用事件是指由安卓系统或者用户产生的行为和动作,通过产生这样一系列的操作使用安卓应用,安卓应用通过响应这样一系列的操作为用户提供服务。安卓应用传感器事件是指智能手机中所配备的传感器在采集物理环境数据时产生的行为和动作,安卓应用在需要使用传感器时打开传感器,在不需要使用时关闭传感器。传感器数据是指传感器收集到的离散化了的真实物理环境的数据,传感器数据附着在传感器事件之中。安卓应用事件处理方法是指应用中定义的用于响应事件的回调函数,当产生了事件后,安卓系统会自动调用注册过的对应的事件处理方法进行处理。传感器事件处理过程是指从调用事件处理方法开始,到事件处理方法返回结束,这包含所有由事件处理方法直接或间接创建的工作线程结束。程序状态是指安卓应用所处于的一种状态,此时程序的全局变量、局部变量和数据库等都有特定的值。程序状态转移是指安卓应用在处于某一状态时,在处理了某个事件后,程序的内部某个值发生了改变,从而转移到了一个新的状态。程序状态空间是指程序所有的状态的集合,并包含这些状态之间可能存在的转移,按照一定的方式,如深度优先方式,可以对程序的状态空间进行遍历。处理传感器事件时的关键代码是指能够影响处理结果的指令,包括跳转指令、数据类型转换和库函数调用。数据范围是指所需要采用的传感器数据的空间大小,包含组成该数据的变量及其值域。关键代码是指改变程序执行流程,从而影响处理结果的指令,包括跳转指令、数据类型转换和库函数调用。动态染色技术是指在调用事件处理方法时,为初始数据附着一个标识,如果某一个指令利用了带有标识的对象,则将标识传递下去,这样可以定位所有利用了初始数据的指令。对用户的好处是指更新了用户可以感受到的数据或界面,如更新数据库、刷新屏幕。下面通过附图和实施例来对本专利技术进行详细说明。如图1所示,本专利技术的针对安卓应用对传感器的能耗漏洞的分析与检测系统,由安卓应用执行模块,传感器数据产生模块和传感器数据利用率分析模块构成,安卓应用执行模块分别和传感器数据产生模块和传感器数据利用率分析模块连接,并且所有的模块运行于验证可执行Java程序的JPF(JavaPathfinder)系统上。JPF是一个搭建在Java虚拟机JVM之上的虚拟机,能够保存程序运行时的快照,即状态,并根据需要取出这些状态以继续运行。这个性质保证了安卓应用执行模块可以按照深度优先的方式遍历应用的状态空间。JPF本身也是一个虚拟机,能够实时监控应用运行时刻字节码执行的情况,这个性质保证了传感器数据生成模块记录执行的关键代码和传感器数据利用率分析模块动态染色技术的实现。本专利技术的针对安卓应用对传感器的能耗漏洞的分析与检测系统将安卓应用的字节码文件和资源文件作为输入,通过分析资源文件得到程序的GUI部件和初始状态时的事件处理方法。安卓应用执行模块将载入应用的字节码文件,按照安卓官方说明书开始初始化并运行该应用。在运行该应用的同本文档来自技高网...
一种针对安卓应用对传感器的能耗漏洞的分析与检测系统

【技术保护点】
一种针对安卓应用对传感器的能耗漏洞的分析与检测系统,其特征在于:由安卓应用执行模块,传感器数据产生模块和传感器数据利用率分析模块构成,安卓应用执行模块分别和传感器数据产生模块和传感器数据利用率分析模块连接,并且所有的模块运行于验证可执行Java程序的JPF系统上。

【技术特征摘要】
1.一种针对安卓应用对传感器的能耗漏洞的分析与检测系统,由安卓应用执行模块,传感器数据产生模块和传感器数据利用率分析模块构成;安卓应用执行模块分别和传感器数据产生模块和传感器数据利用率分析模块连接,其特征在于:所有的模块运行于验证可执行Java程序的JPF系统上;安卓应用执行模块是指解析得到应用的所有事件处理方法,产生模拟事件以激活相应的处理方法,并在事件处理结束后更新事件处理方法的集合,通过产生特定的事件序列,到达对应的程序状态;安卓应用执行模块的工作流程为:安卓应用执行模块首先读入应用的字节码文件和资源文件,并解析得到应用的GUI部件和初始时刻能够调用的事件处理方法集合,该模块将初始应用状态和与之对应的能够调用的事件处理方法集合压入一个栈的数据结构中,并进入一个循环;这个循环的结束判定条件为栈内元素是否为空,如果是空,表明分析已经结束,则从传感器数据利用率分析模块获取结果,整理并报告给用户;如果不为空,将按照如下的步骤进行处理:首先,获取得到栈顶的应用状态作为当前的应用状态及其对应的事件处理方法集合,此时并不将栈顶元素出栈,判断是否存在一个之前未调用过的非传感器事件处理方法,如果存在,则选择一个这样的处理方法并产生相应的事件以激活该方法,如果不存在,则判断当前状态下是否能够产生传感器事件,如果能够产生,则调用传感器数据产生模块利用多维的白盒采样算法生成数据,如果能够继续生成新数据,则开启传感器数据利用率分析模块的功能,并产生一个包裹了新数据的传感器事件,该事件会附着一个特殊的标记以实现动态染色技术,如果不能够产生传感器数据或者传感器数据产生模块不能生成新数据,则移除栈顶的元素并开始下一次循环;传感器数据产生模块的算法工作流程为:传感器数据产生模块首先获取需要采样的数据的初始范围空间,表明组成该传感器数据的变量的个数和每个变量的值域,数据的初始范围的边界点,即由各个变量的最大或最小值组成的数据点,作为第一批采样得到的数据,将会传递给应用程序执行,在执行的过程中将会记录它们的关键指令的执行情况,即在JPF虚拟机上判断当前执行的指令是否属于关键指令,并保存下来,接着数据的初始范围将会被压入一个栈,并进入一个循环,循环体结束的判定条件是栈内元素是否为空,若为空,则跳出循环并结束采样;若不为空,则开始执行循环内的代码,栈顶元素被弹出,并作为当前的数据范围空间;接下来判断当前数据范围的所有的边界数据点对应的关键代码是否一致,每个边界数据点之前已经被处理过一次,并且保存了对应的关键代码,这里的一致指所有的边界数据点对应的关键代码都一样,只要存在一个数据点不同,则被认为不一致,如果一致,则判断当前数据范围的大小是否大于阈值1;如果不一致,则判断当前数据范围的大小是否大于阈值2,如果一致但不大于阈值1或者不一致但不大于阈值2,则将会结束此次循环,如果一致且大于阈值1或者不...

【专利技术属性】
技术研发人员:许畅马晓星吕建李其玮
申请(专利权)人:南京大学
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1