基于RASP区分后台线程权限与UI线程权限的方法与流程

文档序号:16538295发布日期:2019-01-08 20:05阅读:182来源:国知局
基于RASP区分后台线程权限与UI线程权限的方法与流程

本发明涉及信息安全技术领域,具体涉及一种基于rasp技术区分后台线程权限与ui线程权限的方法。



背景技术:

目前,app越来越多,下载量越来越大,很多app会请求通信录、短信等隐私信息的访问权,有些是必要的,有些则是恶意程序或广告请求的。安卓系统本身提供了一种让用户确定是否授权app的机制,但事实上,该机制很难让普通用户明白这个授权系统是如何工作的。

目前提出了一种permission-ui映射的方法,将权限和一些ui(userinterface,用户界面)组件联系起来,让用户更清楚的知道权限被哪些ui组件使用以及如何使用。在该方法中,当绘画ui事件与相关权限对应图时,会受到后台线程所使用权限的干扰,该方法根据“后台程序申请权限使用都是有周期性的”这一特性,虽然一定程度上剔除了后台线程所使用权限的干扰,但是由于时间不准确、未分析线程真正的运行过程和运行环境等等原因,并不能很大程度上剔除后台线程所使用权限的干扰。



技术实现要素:

为了克服上述现有技术的不足,本发明提供一种基于rasp区分后台线程权限与ui线程权限的方法,通过rasp技术,结合上下文,能够使识别后台线程所申请的权限更加准确,当绘画ui事件与相关权限对应图时,可最大程度上剔除后台线程所使用权限的干扰。

本发明通过rasp技术,并结合上下文,很大程度上剔除后台线程所使用权限的干扰。rasp(runtimeapplicationself-protection)是运行时应用自我保护技术。它将自身注入到应用程序中,与应用程序融为一体,结合上下文进行实时检测,并且部署rasp时,应用程序无需在编码时进行任何的修改,只需进行简单的配置即可。在android中为了确保用户顺滑的操作体验,一些耗时的任务不能够在ui线程中运行,像访问网络这类任务。因此,必须要重新开启一个后台线程运行这些任务。然而,往往这些任务最终又会直接或者间接的需要访问和控制ui控件,例如访问网络时需要先获取数据,再将这些数据处理显示出来。这样就直接或者间接需要访问和控制ui控件。但是,由于android规定除了ui线程外,其他线程都不可以对那些ui控件访问和操控。为了解决这个问题,android提供了以下5种方法,用于实现后台线程与ui线程的交互,包括:方法handler、方法activity.runonuithread(runnable)、方法view.post(runnable)、方法view.postdelayed(runnabe,long)、方法asynctask。

本发明提供的技术方案如下:

一种基于rasp区分后台线程权限与ui线程权限的方法,通过rasp的部署,对android系统提供的后台线程与ui线程实现交互的方法分别进行检测,再结合现有对该问题的技术解决方法,即当绘画ui事件与相关权限对应图时,根据“后台程序申请权限使用都是有周期性的”这一特性剔除后台线程所使用权限的干扰,达到准确识别后台线程所用权限的目的;

android系统提供的后台线程与ui线程实现交互的方法包括:方法handler、方法activity.runonuithread(runnable)、方法view.post(runnable)、方法view.postdelayed(runnabe,long)、方法asynctask;

基于rasp区分后台线程权限与ui线程权限的方法包括如下步骤:

1)、部署标记探针,对当前ui事件发生的时间段内的所有后台程序、message变量、handler的sentmessage方法的参数、result变量进行标记,同时将这些后台程序、当前ui事件发生的时间段内的所有ui线程、安卓权限检查日记记录的所有权限都加上时间戳。

2)、针对handler方法;对handler的sentmessage方法部署检测探针,检测探针若检测到该方法的参数被标记且不为空,则说明该后台线程已与ui线程通信。

对handlemessage方法以及runnable的实例部署检测探针,监测message变量,利用动态分析和静态分析的方法,从而得出message变量的内容和线程从looper收到message之后的响应动作,同时根据时间戳,得出在当前ui事件发生的时间段内,该后台线程的功能和所申请的权限。

上述静态分析的方法是:根据被部署探针的程序以及相关程序,进行代码分析和代码逻辑分析。

上述动态分析的方法是:在程序运行过程中根据所部署的标记探针和检测探针进行分析;也可将其放于沙箱内运行进行分析。

3)、针对activity.runonuithread(runnable);对在当前ui事件涉及的ui线程对应的activity的runonuithread方法部署检测探针,检测该方法的参数,检测探针若检测到被标记的后台线程实例,则结合动、静态分析方法分析该后台线程,同时根据时间戳,得出在当前ui事件发生的时间段内,该后台线程所申请的权限。

4)、针对view.post(runnable);对在当前ui事件涉及的ui控件view的post方法部署检测探针,检测该方法的参数,检测探针若检测到被标记的后台线程实例,则结合动、静态分析方法分析该后台线程,同时根据时间戳,得出在当前ui事件发生的时间段内,该后台线程所申请的权限。

5)、针对view.postdelayed(runnabe,long);对在当前ui事件涉及的ui控件view的postdelayed方法部署检测探针,检测该方法的参数,检测探针若检测到被标记的后台线程实例,则结合动、静态分析方法分析该后台线程,同时根据时间戳,得出在当前ui事件发生的时间段内,该后台线程所申请的权限。

6)、针对asynctask;对onpostexecute方法部署检测探针,检测result变量,若检测到result变量被标记且不为空,则说明该后台线程已与ui线程通信;对doinbackground方法部署检测探针,利用动态分析和静态分析的方法,同时根据时间戳,得出在当前ui事件发生的时间段内,该后台线程的功能和所申请的权限。

7)、对步骤2)-6)得出的权限取并集,从而形成权限集合a,权限集合a包括了基于rasp技术检测得到的后台线程权限。

8)、后台线程申请权限是周期性的,根据时间戳,挑选出周期性分布的权限,形成集合b。

利用现有的permission-ui映射的解决方法,每个权限都被盖上时间戳,根据时间分析,凡是呈周期性分布的权限都是后台线程所申请的权限,由这部分后台线程申请的权限构成权限集合b。

9)、将集合a与集合b取交集,得到后台线程所使用权限的集合c,根据集合c可以很好的区分后台线程与ui线程的所申请的权限。

具体地,集合a是根据本发明方案所得出的“后台线程所申请的权限”,集合b是根据现有解决方法所得出的“后台线程所申请的权限”,两者的交集c则是后台线程所使用权限的集合,此时经过两种方法确定的c集合则更为准确,因而,在由权限检查处采样permission-ui映射的方法所检测到的所有权限d中除了后台线程所使用的权限,就是ui线程的所申请的权限。即c为后台线程权限集,ui线程权限集=d-c。

本发明的有益效果:

本发明提供一种基于rasp区分后台线程权限与ui线程权限的方法,通过rasp的部署,对android系统提供的后台线程与ui线程实现交互的方法分别进行检测。当绘画ui事件与相关权限对应图时,现有的根据“后台程序申请权限使用都是有周期性的”这一特性的解决方法剔除后台线程所使用权限干扰的能力有限。利用本发明提供的技术方案,通过结合线程真实运行过程和利用“后台线程申请权限是周期性的”这一特性的现有解决方法,在区分后台线程权限与ui线程权限时,减少了误报率,提高了准确率。另外,rasp给系统带来的性能损失也非常小,几乎可以忽略不计,本发明可被广泛应用。

附图说明

图1是本发明提供方法的流程框图。

具体实施方式

下面结合附图,通过实施例进一步描述本发明,但不以任何方式限制本发明的范围。

本发明提供一种基于rasp区分后台线程权限与ui线程权限的方法,通过rasp的部署,对android系统提供的后台线程与ui线程实现交互的方法分别进行检测,达到准确识别后台线程所用权限的目的。

图1所示是本发明提供方法的流程,本发明的具体实施方式如下:

1、部署标记探针,对当前ui事件发生的时间段内的所有后台程序、message变量、handler的sentmessage方法的参数、result变量进行标记,同时将这些后台程序、当前ui事件发生的时间段内的所有ui线程、安卓权限检查日记记录的所有权限(例如:请求位置、请求访问网络、请求时间等)都加上时间戳。

具体地,本发明方案检测了app的多个ui事件,需对每一个ui事件都进行检测,例如:ui事件为点击“关于”、点击“设置”、点击“时间”、点击“天气”。当前ui事件发生的时间段内的所有后台程序主要包括系统后台程序,例如:系统获取时间、系统获取位置等。message变量、handler的sentmessage方法的参数、result变量主要是根据程序运行实际过程中的变量的内容,handler的sentmessage方法的参数是message,两者都需标记。message用于封装传递给handler或者其他信息比如访问时间时,则message存贮着线程间交互的访问时间内容。当访问网络下载数据时,result变量就是下载的数据的数量。

2、对handler的sentmessage方法部署检测探针,检测探针若检测到该方法的参数被标记且不为空,则说明该后台线程已与ui线程通信。

对handlemessage方法以及runnable的实例部署检测探针,监测message变量,利用动态分析和静态分析的方法,得出message变量的内容和线程从looper收到message之后的响应动作,同时根据时间戳,得出在当前ui事件发生的时间段内,该后台线程的功能和所申请的权限。

具体地,对looper部署探针,得到message后的一系列函数,对函数进行动静态分析,从而得到这些函数的功能(即响应动作)。所申请的权限可由android的权限检查处得到,功能可由上述同样的方法得到;时间戳记录着时间,因而可得到在当前ui事件发生的时间段内,该后台线程的功能和所申请的权限。

上述静态分析的方法是:根据被部署探针的程序以及相关程序,进行代码分析和代码逻辑分析。例如:期间所调用的相关函数,进行人工分析,同时结合所调用的各个函数的功能,由各个调用函数形成代码逻辑。

上述动态分析的方法是:在程序运行过程中根据所部署的标记探针和检测探针进行分析,根据探针动态跟踪函数执行过程。

3、对在当前ui事件涉及的ui线程对应的activity的runonuithread方法部署检测探针,检测该方法的参数,检测探针若检测到被标记的后台线程实例,则结合动态分析方法、静态分析方法分析该后台线程,同时根据时间戳,得出在当前ui事件发生的时间段内,该后台线程所申请的权限。

4、对在当前ui事件涉及的ui控件view的post方法部署检测探针,检测该方法的参数,检测探针若检测到被标记的后台线程实例,则结合动、静态分析方法分析该后台线程,同时根据时间戳,得出在当前ui事件发生的时间段内,该后台线程所申请的权限。

5、对在当前ui事件涉及的ui控件view的postdelayed方法部署检测探针,检测该方法的参数,检测探针若检测到被标记的后台线程实例,则结合动、静态分析方法分析该后台线程,同时根据时间戳,得出在当前ui事件发生的时间段内,该后台线程所申请的权限。

6、对onpostexecute方法部署检测探针,检测result变量,若检测到result变量被标记且不为空,则说明该后台线程已与ui线程通信。

对doinbackground方法部署检测探针,利用动态分析和静态分析的方法,同时根据时间戳,得出在当前ui事件发生的时间段内,该后台线程的功能和所申请的权限。

7、对步骤2-6得出的权限取并集,从而形成集合a。

8、利用现有解决方法:后台线程申请权限是周期性的,根据时间戳,挑选出周期性分布的权限,形成集合b。

9、将集合a与集合b取交集,得到后台线程所使用权限的集合c,根据集合c可以很好的区分后台线程与ui线程的所申请的权限。

需要注意的是,公布实施例的目的在于帮助进一步理解本发明,但是本领域的技术人员可以理解:在不脱离本发明及所附权利要求的精神和范围内,各种替换和修改都是可能的。因此,本发明不应局限于实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1