谁能教我360root的权限怎么
网上很多root教程所使用的都是rageagainstthecage程序,今天下载了rageagainstthecage。c源程序看了一下,大致理解了获取root权限的基本过程和原理。
首先简单解释一下什么是root过的手机(Android系统),所谓root过的手机就是我们可以以root的权限运行各种程序,进而完全控制系统。
因为官方系统基于安全原因,默认程序的运行都是以非root用户运行的,包括adbd进程。adbd进程是手机中运行的一个守护进程,他负责解释并运行PC传送过来的命令,
该进程由init进程创建,但是创建后自身通过调用setuid()系统调用设置运行的用户为shell...全部
网上很多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包或者你说的这个什么360root其实也就是把上面的工作制作成脚本让它自动执行罢了。
收起