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

文档序号:8457191阅读:316来源:国知局
一种针对安卓应用对传感器的能耗漏洞的分析与检测系统的制作方法
【技术领域】
[0001]本发明涉及安卓应用对传感器能耗漏洞的检测系统。
【背景技术】
[0002]由于安卓移动操作系统是一个开源的平台,它吸引了众多的应用开发者,使得近年来安卓系统在移动设备市场中占据了极大的份额。为了实现丰富多彩的应用,智能手机都配备了各种各样的传感器。这些传感器通过感知用户当前的物理环境,从而为用户提供更加个性化的服务。但是另一方面,这些传感器会消耗大量的电量,从而极大地缩短智能手机的续航时间。因此,传感器采集到的数据应当被应用很好地利用,并对用户产生一定的益处。如果传感器数据的利用率过低,则说明相应的电量被浪费了,该应用存在着能耗漏洞。能耗漏洞的存在会造成较差的用户体验,并对安卓应用的进一步发展产生负面作用。
[0003]目前传统的解决办法都只考虑产生相应的事件,包括普通事件和传感器事件,并不考虑传感器事件中所包含的数据。传统的工具在产生传感器事件时,会随机产生所需要的数据并将其附着在事件之中。这导致相应的处理函数中的许多与传感器数据相关的路径都无法被执行,即较低的路径覆盖率。这进一步造成应用无法到达一些与传感器数据相关的特定状态,从而漏报许多存在问题的状态。并且由于产生的数据的随机性,多次分析将会出现不一样的结果。这会极大地困扰用户,降低工具的稳定性和实用性。另一方面,传统的工具在处理传感器事件时,不论程序执行了哪一条路径,都只会转移到同一个新的状态。然而大多数应用都会根据传感器数据的不同而转移到不同的状态以实现智能化的服务,因此这些应用都无法被传统的工具分析。

【发明内容】

[0004]1、所要解决的技术问题:
[0005]目前的安卓应用的传感器分析检测系统存在覆盖范围窄,效率低,分析检测结果不稳定。
[0006]2、技术方案:
[0007]为了解决以上问题,本发明提供了一种针对安卓应用对传感器的能耗漏洞的分析与检测系统,由安卓应用执行模块,传感器数据产生模块和传感器数据利用率分析模块构成,安卓应用执行模块分别和传感器数据产生模块和传感器数据利用率分析模块连接,并且所有的模块运行于验证可执行Java程序的JPF系统上。
[0008]JPF 的全称为 Java Pathfinder。
[0009]所述安卓应用执行模块是指解析得到应用的所有事件处理方法,产生模拟事件以激活相应的处理方法,并在事件处理结束后更新事件处理方法的集合,通过产生特定的事件序列,到达对应的程序状态。
[0010]所述的传感器数据产生模块是指在将初始的数据范围的边界值传递给应用后,记录应用在处理对应的传感器事件过程中执行的所有的关键代码,并判断各个边界值对应的关键代码是否相同,如果相同且该数据范围大于一定的阈值,则将该数据范围划分为较小的范围,如果不同但该数据范围大于另一个较小的阈值,依然将其划分为较小的子范围。
[0011]所述的传感器数据利用率分析模块是指利用动态染色技术标识定位出所有利用了传感器数据的方法调用,并记录其中对用户带来好处的方法调用,统计得到每次由传感器事件所触发的状态转移时的数据利用数,并通过比较所有的状态转移的利用数计算得到每次状态转移的相对传感器数据利用率。
[0012]3、有益效果:
[0013]本发明能分析并执行一个安卓应用,产生一系列的事件序列并传递给应用进行相应的处理,在产生传感器事件时,能够以较小的代价生成足够的数据以覆盖事件处理方法中与传感器数据相关的程序路径,并按照深度优先的方式遍历应用的状态空间,通过计算传感器数据利用率找到有问题的程序状态,最后得到的诊断结果是正确的、高效的和稳定的,上述所有的过程都是自动化的,不需要用户的额外参与。
【附图说明】
[0014]图1为本发明的安卓应用能耗问题诊断系统的结构图。
[0015]图2为自动执行安卓应用的算法流程图。
[0016]图3为自动生成传感器数据的算法流程图。
[0017]图4为自动分析传感器数据利用率的算法流程图。
【具体实施方式】
[0018]为了更清楚的对发明进行说明,首先,对一些用词进行解释。
[0019]安卓应用是指一个可以在安卓移动设备上的安装并运行的应用,当明确对之进行操作时特指这个应用的资源文件和字节码文件。
[0020]Java应用是指一个可以在装有JVM的计算机上运行的由Java语言编写的应用。[0021 ] 安卓应用的字节码是安卓应用的本质,它由若干个类文件组成,这些类中各自包含若干方法,这些类中的方法通过合作,共同实现特定的功能。
[0022]安卓应用⑶I部件是指应用在运行过程中能够显示在屏幕上的部分,从应用的资源文件中解析得到应用初始时刻的GUI部件,当应用运行后,GUI部件可能会动态变化。
[0023]安卓应用事件是指由安卓系统或者用户产生的行为和动作,通过产生这样一系列的操作使用安卓应用,安卓应用通过响应这样一系列的操作为用户提供服务。
[0024]安卓应用传感器事件是指智能手机中所配备的传感器在采集物理环境数据时产生的行为和动作,安卓应用在需要使用传感器时打开传感器,在不需要使用时关闭传感器。
[0025]传感器数据是指传感器收集到的离散化了的真实物理环境的数据,传感器数据附着在传感器事件之中。
[0026]安卓应用事件处理方法是指应用中定义的用于响应事件的回调函数,当产生了事件后,安卓系统会自动调用注册过的对应的事件处理方法进行处理。
[0027]传感器事件处理过程是指从调用事件处理方法开始,到事件处理方法返回结束,这包含所有由事件处理方法直接或间接创建的工作线程结束。
[0028]程序状态是指安卓应用所处于的一种状态,此时程序的全局变量、局部变量和数据库等都有特定的值。
[0029]程序状态转移是指安卓应用在处于某一状态时,在处理了某个事件后,程序的内部某个值发生了改变,从而转移到了一个新的状态。
[0030]程序状态空间是指程序所有的状态的集合,并包含这些状态之间可能存在的转移,按照一定的方式,如深度优先方式,可以对程序的状态空间进行遍历。
[0031]处理传感器事件时的关键代码是指能够影响处理结果的指令,包括跳转指令、数据类型转换和库函数调用。
[0032]数据范围是指所需要采用的传感器数据的空间大小,包含组成该数据的变量及其值域。
[0033]关键代码是指改变程序执行流程,从而影响处理结果的指令,包括跳转指令、数据类型转换和库函数调用。
[0034]动态染色技术是指在调用事件处理方法时,为初始数据附着一个标识,如果某一个指令利用了带有标识的对象,则将标识传递下去,这样可以定位所有利用了初始数据的指令。
[0035]对用户的好处是指更新了用户可以感受到的数据或界面,如更新数据库、刷新屏蒂。
[0036]下面通过附图和实施例来对本发明进行详细说明。
[0037]如图1所示,本发明的针对安卓应用对传感器的能耗漏洞的分析与检测系统,由安卓应用执行模块,传感器数据产生模块和传感器数据利用率分析模块构成,安卓应用执行模块分别和传感器数据产生模块和传感器数据利用率分析模块连接,并且所有的模块运行于验证可执行Java程序的JPF (Java Pathfinder)系统上。JPF是一个搭建在Java虚拟机JVM之上的虚拟机,能够保存程序运行时的快照,即状态,并根据需要取出这些状态以继续运行。这个性质保证了安卓应用执行模块
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1