一种面向ANDROID系统资源的访问控制方法.pdf

上传人:a3 文档编号:6180968 上传时间:2019-05-17 格式:PDF 页数:7 大小:767.47KB
返回 下载 相关 举报
摘要
申请专利号:

CN201310675959.0

申请日:

2013.12.11

公开号:

CN103699835A

公开日:

2014.04.02

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 21/55申请日:20131211|||公开

IPC分类号:

G06F21/55(2013.01)I; G06F21/52(2013.01)I

主分类号:

G06F21/55

申请人:

西安交通大学

发明人:

桂小林; 代敏; 郭岳龙; 赵建强; 田丰; 林建财; 安健

地址:

710049 陕西省西安市碑林区咸宁西路28号

优先权:

专利代理机构:

西安通大专利代理有限责任公司 61200

代理人:

徐文权

PDF下载: PDF下载
内容摘要

本发明公开了一种面向Android系统资源的访问控制方法,包括:1)上层应用请求使用系统资源时,调用ServiceManager,当运行到断点时,监控程序读取寄存器信息,进而获得请求资源的信息和发出请求的应用信息;监控程序判断请求资源和发出请求的应用是否需要拦截,如果是,则进入步骤2);如果否,正常调用ServiceManager分配系统资源;2)弹出对话框,提示用户。

权利要求书

权利要求书
1.  一种面向Android系统资源的访问控制方法,其特征在于,包括以下步骤:
1)、上层应用请求使用系统资源,调用ServiceManager,当运行到监控代码时,转入到监控拦截程序中运行,监控拦截程序分析svcmgr_handler()函数的参数中的内容,获取到请求资源的信息和发出请求的应用信息;
监控拦截程序首先判断中断号是否来自加入的断点,判断条件为:
(ARM_pc>=int_addr)&&ARM_pc<=(int_addr+0xf)
其中ARM_pc是寄存器中下一条指令的地址,int_addr为断点注入地址;
如果满足判断条件,说明拦截到的中断来自加入的断点,存储相应资源信息和请求者的信息到对应寄存器中,然后进入步骤2);如果不满足判断条件,正常调用ServiceManager分配系统资源;
2)、获取请求资源的信息,判断是否为敏感资源;如果为敏感系统资源,弹出对话框,提示用户,根据用户的选择,进行相应的处理;否则,继续执行ServiceManager执行系统资源的调用。

2.  根据权利要求1所述的一种面向Android系统资源的访问控制方法,其特征在于,所述敏感系统资源为摄像头、麦克风、蓝牙、WIFI、短信的发送或GPS。

3.  根据权利要求1所述的一种面向Android系统资源的访问控制方法,其特征在于,步骤2)中如果系统调用敏感资源,则从对应寄存器中读取申请者信息,通过socket发送给上层,弹出对话框,提示用户应用名和所申请的资源,供用户选择是禁止还是允许此次申请;若禁止此次申请,则跳出ServiceManager阻止系统资源的访问,若允许此次申请,则继续执行ServiceManager,允许资源的调用。

4.  根据权利要求1所述的一种面向Android系统资源的访问控制方法,其特征在于,监控拦截程序的监控代码注入的起始地址和偏移地址为ServiceManager处理资源请求的起始地址和偏移地址。

5.  根据权利要求1所述的一种面向Android系统资源的访问控制方法,其 特征在于,所述一种面向Android系统资源的访问控制方法应用于Android4.1中。

6.  根据权利要求1所述的一种面向Android系统资源的访问控制方法,其特征在于,监控拦截程序的监控代码注入包括以下步骤:
a)、获取ServiceManager的代码注入地址,包含ServiceManager处理资源请求的起始地址和偏移地址;
b)、保存状态,执行系统调用getpid()注入监控拦截程序的监控代码到ServiceManager中。

说明书

说明书一种面向Android系统资源的访问控制方法
技术领域:
本发明属于基于Android系统的智能终端的安全防护领域,具体涉及一种面向Android系统资源的访问控制方法。
背景技术:
随着Android系统的日益流行,越来越多的设备厂商转向Android系统,基于该系统的应用数量也呈爆炸式增长。随之而来的安全问题也日益严严峻,如何快速检测应用安全性,保证用户的应用安全是一项巨大的挑战。首先,由于系统的差异性,传统的面向Windows系统的安全性检测方法不再适用;其次,Android系统的开源性为恶意应用开发者提供了优越的空间;另外,Android系统版本各异,缺乏统一的管理;最后,Android应用下载中心混杂,应用安全性无法保证。这些新特性的出现,使得基于Android系统的应用安全性检测更加困难。鉴于此,学者们提出静态检测和动态检测两种方式进行应用的安全性判定,这两种方式虽然在很大程度上保证了用户的安全性,但仍存在不足。现有的静态检测方式:(1)病毒特征值比对,需要依赖庞大的病毒库,属于后知后觉;(2)权限分析,则需要为每种权限设定适当的权重,并确定合适的阈值。动态监测:(1)改变系统源码,实现复杂;(2)Hook API方法需要针对不同的行为Hook不同的API。这些方法都存在缺陷,不能简单快捷的发现恶意应用,全面保证用户的安全。
发明内容:
针对以上问题,本发明提出一种面向Android系统资源的访问控制方法,通过监控ServiceManager的调用,发现并拦截系统中敏感资源的调用,及时提醒用 户,让用户自行决定是“禁止”还是“允许”,并且根据用户的选择进行相应的操作。
为了实现上述目的,本发明采用如下技术方案:
一种面向Android系统资源的访问控制方法,包括以下步骤:
1)、上层应用请求使用系统资源,调用ServiceManager,当运行到监控代码时,转入到监控拦截程序中运行,监控拦截程序分析svcmgr_handler()函数的参数txt中的内容,获取到请求资源的信息和发出请求的应用信息;
监控拦截程序首先判断中断号是否来自加入的断点,判断条件为:
(ARM_pc>=int_addr)&&ARM_pc<=(int_addr+0xf)
其中ARM_pc是寄存器中下一条指令的地址,int_addr为断点注入地址,0xf为十六进制表示的常数16;不同版本系统断点语句数目可能不同,本发明取范围int_addr至int_addr+0xf;
如果满足判断条件,说明拦截到的中断来自加入的断点,存储相应资源信息和请求者的信息到对应寄存器中,然后进入步骤2);如果不满足判断条件,正常调用ServiceManager分配系统资源;
2)、获取请求资源的信息,判断是否为敏感系统资源;如果为敏感系统资源,弹出对话框,提示用户,根据用户的选择,进行相应的处理;否则,继续执行ServiceManager执行系统资源的调用;
所述敏感系统资源为摄像头、麦克风、蓝牙、WIFI、短信的发送或GPS。
本发明进一步的改进在于:步骤2)中如果系统调用敏感资源,则从对应寄存器中读取申请者信息,通过socket发送给上层,弹出对话框,提示用户应用名和所申请的资源,供用户选择是禁止还是允许此次申请;若禁止此次申请,则跳出ServiceManager阻止系统资源的访问,若允许此次申请,则继续执行ServiceManager,允许资源的调用。
本发明进一步的改进在于:监控拦截程序的监控代码注入的起始地址和偏移地址为ServiceManager处理资源请求的起始地址和偏移地址。
本发明进一步的改进在于:所述一种面向Android系统资源的访问控制方法应用于安卓4.1中。
本发明进一步的改进在于:监控拦截程序的监控代码注入包括以下步骤:
a)、获取ServiceManager的代码注入地址,包含ServiceManager处理资源请求的起始地址和偏移地址;
b)、保存状态,执行系统调用getpid()注入监控拦截程序的监控代码到ServiceManager中。
相对于现有技术,本发明具有以下有益效果:
本发明中:监控拦截ServiceManager不用改动系统内核程序。监控拦截ServiceManager不用Hook大量的API执行相应的监控。监控拦截ServiceManager能够有效定位申请系统资源者的来源。
本发明中:txt参数为处理系统具体资源调用函数svcmgr_handler()的形式参数,txt为binder_txn结构体类型的参数,其组成成员包含调用申请资源的应用id,申请资源的具体内容,从中可以确定申请者来源以及根据申请内容检测敏感资源的调用。
由于本发明通过监控ServiceManager进程的运行达到监控管理系统敏感资源的调用,首先ServiceManager在Android系统架构中处于应用框架层,在监控拦截系统敏感资源调用时从ServiceManager出发并未涉及到系统内核层,不需要修改相应的系统源码;另外ServiceManager是处理系统资源调用的统一接口,通过实现它的监控不需要Hook不同的系统资源调用API达到监控拦截目的,并且能够确定调用者来源。因此,本发明能够简单有效的发现并拦截系统敏感资源的 调用。
本发明在Android4.1系统版本上将使用java语言实现的监控拦截程序实际运行,通过编写测试程序检测其监控拦截功能的可用性以及命中率。记录了监控拦截的实际资源种类,从实验结果发现,摄像头、麦克风、WIFI等敏感系统资源的调用都能有效监控并拦截到。其次通过多次运行测试程序,观察监控拦截程序的命中率,从实验结果发现,每种定义的敏感系统资源都能100%的监控拦截。
本发明面向基于Android系统的智能终端安全防护领域,适用于发现摄像头、麦克风、耳机、蓝牙等系统资源的调用,同时有效拦截短信发送和电话簿读取行为。本发明在已有系统kernel层检查拦截API调用方法的基础上,提出在用户态层面监控ServiceManager来发现并拦截相应资源的调用,克服了已有需要修改系统源码和无法区分原始请求者的缺陷,从而具有更好的科学性和更高的实际应用价值。
附图说明
图1为本发明的工作流程示意图。
具体实施方式
下面结合附图说明和具体实施方式对本发明做进一步详细说明。
本发明一种面向Android系统资源的访问控制方法,通过该方法实现表1中所示的所有敏感系统资源的访问控制,并且可以有效的拦截,具体包括下列步骤:
步骤一:获取ServiceManager的代码注入地址:包含ServiceManager处理资源请求的起始地址addr1和偏移地址addr2;
本发明发现ServiceManager为处理系统资源调用访问的入口,当应用需要申请系统资源(例如麦克风、摄像头等)时,会首先启动ServiceManager,而后由ServiceManager根据请求做相应处理。通过分析ServiceManager源码,得到 svcmgr_handler()为资源调用对应的处理函数,其中该函数的参数txt中包含请求资源的信息以及请求者的信息。其中参数txt是一个binder_txn类型的结构体,其中包含发出请求应用的信息以及具体请求的系统资源信息。
因此,本发明从svcmgr_handler()函数出发,找到相应入口地址,注入自己的代码,发现并拦截相应的系统调用,具体入口地址分为起始地址和偏移地址。通过分析,指令“2de9”的地址是ServiceManager处理资源请求的入口地址,“f043”的地址是ServiceManager处理资源请求的偏移位置。
具体实现首先读入ServiceManager源文件,每次读入两个字节,依次找到指令“2de9”和“f043”的地址将二者组合起来即为自定义代码的注入地址。
表1所有敏感系统资源的访问控制表
序号行为说明拦截时机1StartCamera打开摄像头事前拦截2StartMic打开麦克风事前拦截3UsrLocation使用GPS事前拦截4SendSMS发送短信事前拦截5UsrWIFI使用WIFI事前拦截6UseBluetooth使用蓝牙事前拦截
步骤二:保存现场,注入监控代码到ServiceManager中,启动运行监控Service;
本发明采用java编程实现监控拦截。具体跟踪是采用ptrace实现,发现拦截系统资源调用,只有当ptrace检测到系统调用时,真正的跟踪监控ServiceManager的程序才开始运行,但是人为添加的系统调用必须是轻量级的,保证对后续操作几乎无影响,因此,在实现的过程中采用getpid()这一系统调用,既不影响后续调用同时又能转入到监控拦截程序中开始执行监控。
Android系统的每个系统调用都有唯一的数字ID,getpid()对应的代码是0x14,当出现“SVC0”指令时,说明当前有应用申请系统调用,此时,系统会从指令寄存器R7中读取数值执行对应的系统调用。
因此,要将getpid()调用的代码注入到相应位置,首先需要保存R7寄存器中的值,然后将0x14存放到R7中,并且执行指令“SVC0”,具体实现代码如下:
append_asm(asm_bin,len,0x48424606,4);
append_asm(asm_bin,len,0xDF002714,4);
步骤三:上层应用请求使用系统资源,调用ServiceManager,当运行到监控代码时,转入到监控拦截程序中运行,分析svcmgr_handler()函数的参数txt中的内容,获取到请求资源的信息和发出请求的应用信息;
监控拦截程序首先判断中断号是否为系统资源调用中断号,判断条件为“(regs1.ARM_pc<=(int_addr+0xf))&&(regs1.ARM_pc>=int_addr)”(其中int_addr为监控代码注入地址),如果是,则存储相应txt中的资源信息和请求者的信息到对应寄存器中,然后进入步骤四;以后只需要读取相应寄存器即可获取到请求资源的信息和发出请求应用的信息。如果否,正常调用ServiceManager分配系统资源。
步骤四:获取请求资源的信息,判断是否为敏感系统资源;(根据已获取到的请求资源信息,判断是否为敏感系统资源中的一种,具体包括摄像头、麦克风、蓝牙、WIFI、短信的发送、GPS。)如果为敏感系统资源,弹出对话框,提示用户,根据用户的选择,进行相应的处理。否则,继续执行ServiceManager执行系统资源的调用。
如果本次系统调用为敏感资源,则从对应寄存器中读取申请者信息,通过socket发送给上层,弹出对话框,提示用户应用名和所申请的资源,让用户选择是“禁止”还是“允许”此次申请。若“禁止”,则跳出ServiceManager阻止系统资源的访问,若“允许”,则继续执行ServiceManager,允许资源的调用。

一种面向ANDROID系统资源的访问控制方法.pdf_第1页
第1页 / 共7页
一种面向ANDROID系统资源的访问控制方法.pdf_第2页
第2页 / 共7页
一种面向ANDROID系统资源的访问控制方法.pdf_第3页
第3页 / 共7页
点击查看更多>>
资源描述

《一种面向ANDROID系统资源的访问控制方法.pdf》由会员分享,可在线阅读,更多相关《一种面向ANDROID系统资源的访问控制方法.pdf(7页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 103699835 A (43)申请公布日 2014.04.02 CN 103699835 A (21)申请号 201310675959.0 (22)申请日 2013.12.11 G06F 21/55(2013.01) G06F 21/52(2013.01) (71)申请人 西安交通大学 地址 710049 陕西省西安市碑林区咸宁西路 28 号 (72)发明人 桂小林 代敏 郭岳龙 赵建强 田丰 林建财 安健 (74)专利代理机构 西安通大专利代理有限责任 公司 61200 代理人 徐文权 (54) 发明名称 一种面向 Android 系统资源的访问控制方法 (57)。

2、 摘要 本发明公开了一种面向 Android 系统资源的 访问控制方法, 包括 : 1) 上层应用请求使用系统 资源时, 调用 ServiceManager, 当运行到断点时, 监控程序读取寄存器信息, 进而获得请求资源的 信息和发出请求的应用信息 ; 监控程序判断请求 资源和发出请求的应用是否需要拦截, 如果是, 则 进入步骤 2) ; 如果否, 正常调用 ServiceManager 分配系统资源 ; 2) 弹出对话框, 提示用户。 (51)Int.Cl. 权利要求书 1 页 说明书 4 页 附图 1 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书1页 说明书4。

3、页 附图1页 (10)申请公布号 CN 103699835 A CN 103699835 A 1/1 页 2 1. 一种面向 Android 系统资源的访问控制方法, 其特征在于, 包括以下步骤 : 1) 、 上层应用请求使用系统资源, 调用 ServiceManager, 当运行到监控代码时, 转入到 监控拦截程序中运行, 监控拦截程序分析 svcmgr_handler() 函数的参数中的内容, 获取到 请求资源的信息和发出请求的应用信息 ; 监控拦截程序首先判断中断号是否来自加入的断点, 判断条件为 : (ARM_pc=int_addr)&ARM_pc=int_addr)&ARM_pc=i。

4、nt_addr)”(其中int_addr为监控代码注入 地址) , 如果是, 则存储相应txt中的资源信息和请求者的信息到对应寄存器中, 然后进入步 骤四 ; 以后只需要读取相应寄存器即可获取到请求资源的信息和发出请求应用的信息。如 果否, 正常调用 ServiceManager 分配系统资源。 0042 步骤四 : 获取请求资源的信息, 判断是否为敏感系统资源 ;(根据已获取到的请求 资源信息, 判断是否为敏感系统资源中的一种, 具体包括摄像头、 麦克风、 蓝牙、 WIFI、 短信 的发送、 GPS。 ) 如果为敏感系统资源, 弹出对话框, 提示用户, 根据用户的选择, 进行相应的 处理。否则, 继续执行 ServiceManager 执行系统资源的调用。 0043 如果本次系统调用为敏感资源, 则从对应寄存器中读取申请者信息, 通过 socket 发送给上层, 弹出对话框, 提示用户应用名和所申请的资源, 让用户选择是 “禁止” 还是 “允 许” 此次申请。若 “禁止” , 则跳出 ServiceManager 阻止系统资源的访问, 若 “允许” , 则继续 执行 ServiceManager, 允许资源的调用。 说 明 书 CN 103699835 A 6 1/1 页 7 图 1 说 明 书 附 图 CN 103699835 A 7 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 >


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1