root破解过程的
终极目标是替换掉系统中的su程序。但是要想替换掉系统中su程序本身就是需要root权限的,怎样在root破解过程中获得root权限,成为我们研究的重点了。下面我们先清点一下我们需要破解系统情况,假设需要破解的Android系统具备如下条件:
1、可以通过adb连接到设备,一般意味着驱动程序已经安装。
2、但是adb获得用户权限是shell用户,而不是root。(漏洞)
想理解root破解过程我们首先需要了解一下adb工具,SDK中包含adb工具,设备端有adbd服务程序后台运行,为开发机的adb程序提供服务,adbd的权限,决定了adb的权限。具体用户可查看/system/core/adb下的源码,查看Android.mk你将会发现adb和adbd其实是一份代码,然后通过宏来编译。
查看adb.c的adb_main函数你将会发现adbd中有如下代码:
int adb_main(int is_daemon)
{
......
property_get("ro.secure", value, "");
if (strcmp(value, "1") == 0) {
// don't run as root if ro.secure is set...
secure = 1;
......
}
if (secure) {
......
setgid(AID_SHELL);
setuid(AID_SHELL);
......
}
}
从中我们可以看到adbd会检测系统的ro.secure属性,如果该属性为1则将会把自己的用户权限降级成shell用户。一般设备出厂的时候在/default.prop文件中都会有:
ro.secure=1
这样将会使adbd启动的时候自动降级成shell用户。
然后我们再介绍一下adbd在什么时候启动的呢?答案是在init.rc中配置的系统服务,由init进程启动。我们查看init.rc中有如下内容:
# adbd is controlled by the persist.service.adb.enable system property
2: service adbd /sbin/adbd
3: disabled
对Android属性系统少有了解的朋友将会知道,在init.rc中配置的系统服务启动的时候都是root权限(因为init进行是root权限,其子程序也是root)。由此我们可以知道在adbd程序在执行:
/* then switch user and group to "shell" */
setgid(AID_SHELL);
setuid(AID_SHELL);
代码之前都是root权限,只有执行这两句之后才变成shell权限的。
这样我们就可以引出root破解过程中获得root权限的方法了,那就是让以上面setgid和setuid函数执行失败,也就是降级失败,那就继续在root权限下面运行了。
这其实利用了一个RageAgainstTheCage漏洞,具体分析请参考《Android adb setuid提权漏洞的分析》和《RageAgainstTheCage》
通过上面的介绍我们发现利用RageAgainstTheCage漏洞,可以使adbd获得root权限,也就是adb获得了root权限。拿到root权限剩下的问题就好办了,复制破解之后的su程序到系统中
转:http://my.unix-center.net/~Simon_fu/?p=1100
分享到:
相关推荐
Android系统root破解原理分析
Android手机一键Root原理分析,源码实例,SuperUser
Android手机一键Root原理分析pdf高清版,并包括了分析中所列举的几个要点的源码文件,帮助加深对Android手机一键Root的理解。主要分析了手机Root权限获取的过程,并介绍了常见的几个Root提权漏洞,最后通过分析su与...
安卓Android源码——Android手机一键Root原理分析.zip
Android手机一键Root原理分析.zip
Android手机一键Root原理分析.zip源码资源下载Android手机一键Root原理分析.zip源码资源下载
Android手机一键Root原理分析.zip项目安卓应用源码下载Android手机一键Root原理分析.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
安卓Android源码——手机一键Root原理分析.zip
安卓Android源码——精典源码之手机一键Root原理分析.zip
Android应用源码之手机一键Root原理分析
Android 手机一键Root原理分析 (2).zip
本篇文章通过对Android系统的特性的分析,介绍了Android系统漏洞及Root工具的使用,并在证据采集过程中探讨了Root工具的应用,如获取数据、恢复删除的数据、获取系统内存镜像以及绕过启动密码等问题。 首先,需要...
手机一键Root原理分析.zip
Android 应用开发源码