android4.0 root 原理,关于root原理的理解

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

网上很多root教程所使用的都是rageagainstthecage程序,今天下载了rageagainstthecage.c源程序看了一下,大致理解了获取root权限的基本过程和原理。

首先简单解释一下什么是root过的手机(Android系统),所谓root过的手机就是我们可以以root的权限运行各种程序,进而完全控制系统。

因为官方系统基于安全原因,默认程序的运行都是以非root用户运行的,包括adbd进程。adbd进程是手机中运行的一个守护进程,他负责解释并运行PC传送过来的命令,

该进程由init进程创建,但是创建后自身通过调用setuid()系统调用设置运行的用户为shell用户。所以我们在手机中执行ps命令看到的adbd进程都是以shell用户身份运行的。

获取root权限的关键是想办法让adbd进程重新以root身份运行,这样通过电脑传送过来的命令也就能够以root身份运行了。

众所周知,Android系统用的是linux的内核,在linux中,对于用户最大允许运行的进程数有限制,所以rageagainstthecage程序在运行后先结束当前的adbd进程,

然后init进程会重新启动新的adbd进程。但是rageagainstthecage程序同时会创建大量的子进程,这些子进程默认都是shell用户身份,从而使得shell用户拥有的进程数达到最大值,这就使得新启动的adbd进程调用setuid()系统调用失败,因为shell用户的进程数已满,adbd无法把自己运行的用户设置为shell用户,从而保持在刚创建时的root用户身份中运行。

这时候我们在电脑中执行adb shell命令时发现已经进入root shell了。

从上面的分析我们可以知道:要能够root成功必须满足两点:

1、系统必须已经设置每个用户允许运行的最大进程数(官方的Android2.1、2.2好像都已经设置,2.3的不是很清楚)。

2、必须要在新启动的adbd进程调用setuid()系统调用前创建足够多的进程数。但是因为系统进程调度的随机性,并不能保证每一次都能满足这个要求,这也就是为什么网上说多试几次就会成功。

执行完rageagainstthecage程序后其实已经获得了root权限,但是每次这么做非常麻烦,所以还应该设置一些永久性的东西,主要是上传几个程序到系统并设置相应权限,这几个程序分别是:

su--使得非root用户能够以root身份运行程序。

busybox--系统工具包,包含很多的系统使用工具。

SuperUser.apk--授权管理软件包,为需要root身份运行的程序授权。

网上下的一键root包其实也就是把上面的工作制作成脚本让它自动执行罢了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值