安卓user版本在SELinux强制模式下获取root特权的方法及系统技术方案

技术编号:19056353 阅读:755 留言:0更新日期:2018-09-29 12:05
本发明专利技术提供一种安卓user版本在SELinux强制模式下获取root特权的方法及系统,属于计算机软件应用领域。本发明专利技术方法包括如下步骤:设置两个属性;修改SELinux的编译规则文件,使安卓系统编译时生成特权SELinux配置文件;编写可执行文件,完成SELinux配置文件的切换;编写可执行文件对应的rc文件;修改adbd源代码,使adbd fork出来的子进程shell有root权限。本发明专利技术的有益效果为:解决了需要调试等一些特殊问题,在不破坏现场环境的情况下,提供了有力的帮助,大大缩短了时间成本。

【技术实现步骤摘要】
安卓user版本在SELinux强制模式下获取root特权的方法及系统
本专利技术涉及计算机软件应用领域,尤其涉及一种安卓user版本在SELinux强制模式下获取root特权的方法及系统。
技术介绍
Android4.4版本之前,Android系统的底层的权限管理使用的是DAC模式,Android4.4版本之后,使用的是MAC+DAC模式,尽管有些版本不是完全的MAC控制,但是随着安全性能越来越高,在最新的android系统当中,已经使用了完全的MAC来控制权限,也就是说如果Android系统内部没有许可获得特权,那么用户几乎是不能获得root权限的,即使用户获得DAC的root权限,在实际操作过程中,还是会被MAC拒绝而失败。而MAC的控制就是使用SELinux来实现的。其中,DAC为DiscretionaryAccessControl的简称,代表自主访问控制。访问控制模式是rwxrwxrwx,r代表read,w代表write,x代表execute,没有对应权限以-代替,每三个字符一组,这三个组分别是:所有者用户-所有者组-其他。MAC为MandatoryAccessControl的简称,代表强制访问控制,访问控制模式是user:role:type,代表用户:角色:类型。正是因为这样严格的权限管理,我们在有些情况下就会遇到问题,比如:客户在使用user版本遇到了重大的必须解决的问题后,需要将系统里面的一些数据获取出来或通过设置手机里面的参数来调试的时候,却被权限管理挡在门外了,也就是需要一种在SELinux正常工作的情况下,依然可以在user版本上获取特权的机制,方便临时调试。现存在的几种方案是根据系统属性值将SELinux临时关闭,但这种方案的弊端是google认证会不定期检查user版本关闭SELinux的情况,一旦google检测到这种情况,就会要求厂商更新软件,否者,google认证不与通过,这增加了后期维护的成本。现存的还有一种方案是为用户编译可调试版本,让客户或者售后重新下载软件,然后一直测试直到问题重现,再来调试,时间成本太高,并且本身版本性质不同也有一些差异,问题能否重现也不得而知。其中,申请号:201210436649.9,专利名称为《安卓应用程序永久获取root权限的方法》的专利未考虑SELinux在强制模式下的情况,在此模式下,此方案行不通,在获取root权限上会失败;并且,此方案依赖已经root好的系统作为前置条件,其运行在应用层面,在设置suid会被root检测程序检测出,从而无法获取root权限。
技术实现思路
为解决现有技术中的问题,本专利技术提供一种安卓user版本在SELinux强制模式下获取root特权的方法,还提供一种实现该方法的系统。本专利技术方法包括如下步骤:S1:设置两个属性,其中,第一属性用来标识安卓系统是否需要启动特权root;第二属性用来通知init进程执行SELinux配置文件的重新加载;S2:修改SELinux的编译规则文件,使安卓系统编译时生成特权SELinux配置文件,S3:编写可执行文件,完成SELinux配置文件的切换;S4:编写可执行文件对应的rc文件;S5:修改adbd源代码,使adbdfork出来的子进程shell有root权限。本专利技术作进一步改进,还包括步骤S6:编写root开关应用程序,设置root特权启动方式。本专利技术作进一步改进,在步骤S2中,修改后的编译规则文件,使系统生成两套配置文件,一套是原来android标准的配置文件,另外一套是特权SELinux配置文件。本专利技术作进一步改进,所述SELinux的配置处理过程为:A1:系统开启,kernelSELinux驱动模块加载,判断是否enforcing=1,如果是,kernel进入enforcing模式,如果否,kernel进入permissive模式;A2:通过init进程配置SELinux,具体实现方法为:A201:判断安卓系统当前是否为user版本,如果是,安卓使用enforcing模式,如果否,init进程检测cmdline是否存在androidboot.selinux=permissive,如果存在,进入permissive模式,如果不存在,进入enforcing模式;A202:判断设定目录下是否有配置文件,如果有,执行该配置文件,如果没有,执行系统默认配置。本专利技术作进一步改进,步骤S3中,所述可执行文件的处理方法为:根据系统root特权需求选择将SELinux配置文件拷贝入设定目录,或者删除设定目录下的SELinux配置文件,然后,通知Init进程重新加载SELinux配置文件。本专利技术作进一步改进,在步骤S5中,adbd处理方法为:S51:adbd服务启动,判断是否请求root特权,如果是,adbd不降权,设置SELinux环境上下文,使adbdfork出来的子进程shell为特权shell,如果否,adbd降权,adbdfork出来的子进程shell为普通shell;S52:执行adbd主循环,adbd服务结束。本专利技术还提供一种实现该方法的系统,包括设置模块:用于设置两个属性,其中,第一属性用来标识安卓系统是否需要启动特权root;第二属性用来通知init进程执行SELinux配置文件的重新加载;第一修改模块:用于修改SELinux的编译规则文件,使安卓系统编译时生成特权SELinux配置文件;第一编写模块:用于编写可执行文件,完成SELinux配置文件的切换;第二编写模块:用于编写可执行文件对应的rc文件;第二修改模块:用于修改adbd源代码,使adbdfork出来的子进程shell有root权限。本专利技术作进一步改进,还包括第三编写模块:编写root开关应用程序,设置root特权启动方式。与现有技术相比,本专利技术的有益效果是:解决了需要调试等一些特殊问题,在不破坏现场环境的情况下,提供了有力的帮助,大大缩短了时间成本。附图说明图1为本专利技术方法流程图;图2为SELinux标准配置方法流程图;图3为可执行文件的处理方法流程图;图4为dbb系统服务在针对系统请求服务的逻辑处理流程图。具体实施方式下面结合附图和实施例对本专利技术做进一步详细说明。本专利技术是android(安卓)系统user版本在SELinuxEnforcing(强制模式)的环境下,能获取root特权的方案。SELinux在user版本状态下,一般的都是使用了系统默认配置。而本申请另辟蹊径,让系统可以使用预先定义好的特权配置文件,让SELinux策略给特定的程序以特定的权利,本申请在现有的androidSELinux的基础上,只需少量代码配置即可实现,在不违背标准SELinux策略配置的情况下,根据请求特权与否,将预置的特权配置文件放到系统特定的目录/data/security/current/下面,或将系统特定目录/data/security/current/目录下的配置文件全部删除,然后通知init进程重新加载SELinux配置文件,从而形成新的权限策略。其中,Android是谷歌公司基于linux开发的一套开源系统,称为安卓。User版本:是android在发布软件的可选项之一,android在发布软件有以本文档来自技高网
...

【技术保护点】
1.安卓user版本在SELinux强制模式下获取root特权的方法,其特征在于包括如下步骤:S1:设置两个属性,其中,第一属性用来标识安卓系统是否需要启动特权root;第二属性用来通知init进程执行SELinux配置文件的重新加载;S2:修改SELinux的编译规则文件,使安卓系统编译时生成特权SELinux配置文件,S3:编写可执行文件,完成SELinux配置文件的切换;S4:编写可执行文件对应的rc文件;S5:修改adbd源代码,使adbd fork出来的子进程shell有root权限。

【技术特征摘要】
1.安卓user版本在SELinux强制模式下获取root特权的方法,其特征在于包括如下步骤:S1:设置两个属性,其中,第一属性用来标识安卓系统是否需要启动特权root;第二属性用来通知init进程执行SELinux配置文件的重新加载;S2:修改SELinux的编译规则文件,使安卓系统编译时生成特权SELinux配置文件,S3:编写可执行文件,完成SELinux配置文件的切换;S4:编写可执行文件对应的rc文件;S5:修改adbd源代码,使adbdfork出来的子进程shell有root权限。2.根据权利要求1所述的方法,其特征在于:还包括步骤S6:编写root开关应用程序,设置root特权启动方式。3.根据权利要求1或2所述的方法,其特征在于:在步骤S2中,修改后的编译规则文件,使系统生成两套配置文件,一套是原来android标准的配置文件,另外一套是特权SELinux配置文件。4.根据权利要求3所述的方法,其特征在于:所述SELinux的配置处理过程为:A1:系统开启,kernelSELinux驱动模块加载,判断是否enforcing=1,如果是,kernel进入enforcing模式,如果否,kernel进入permissive模式;A2:通过init进程配置SELinux,具体实现方法为:A201:判断安卓系统当前是否为user版本,如果是,安卓使用enforcing模式,如果否,init进程检测cmdline是否存在androidboot.selinux=permissive,如果存在,进入permissive模式,如果不存在,进入e...

【专利技术属性】
技术研发人员:胡艳伟
申请(专利权)人:北京海杭通讯科技有限公司
类型:发明
国别省市:北京,11

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

1