admin 管理员组文章数量: 887021
一、什么是root?
在操作系统中,一般都有两种用户,一是管理员,二是用户。管理员的权限很大,可以修改操作系统中的一切。比如,windows下的管理员可以删除记事本程序,但普通用户就不可以了。在Linux系统中,包括android系统
,在用户控制方面很严格,管理员帐号不允许被直接使用。
在linux系统中,管理员帐号叫root。android内核是linux,其管理员也叫做root。而在windows系统中,管理员帐号叫administrator。root首先是个名词,但我们把它动词化了。我们所说的“root”
, 其实是“得到root用户权限”的简称。
二,为什么要ROOT?
ROOT会带来哪些好处?可以让我们拥有掌控手机系统的权限,比如删除系统自带的软件,更换开关机铃声和动画,拦截状态栏弹出的广告等。ROOT带来了更高的权限,但对系统本身,没有任何影响。
三, 怎么ROOT?
一般对手机root按照以下思路进行。
(一)能利用漏洞的利用漏洞提升到root。
下面以ageAgainstTheCage漏洞为例,谈谈root提权的过程。其它漏洞,参见利用系统漏洞提权的案例,http://blog.csdn/tanwei4199/article/details/17532805。
基于安全原因,手机android系统默认程序的运行都是以非root用户运行的,包括adbd进程。adbd进程运行在手机中,他负责解释并运行PC传送过来的命令,该进程在刚启动时具有root权限,运行过程中降权为shell用户权限。如果能想办法让adbd进程一直以root身份运行,那么通过电脑传送过来的命令也能以root身份运行了。
RageAgainstTheCage程序就能达到上述目的,它主要做两件事:一是结束当前的adbd进程。二是创建大量的僵尸进程,这些进程默认都是shell用户身份。
我们看看它这么做会造成什么影响。首先,android系统一旦发现adbd进程结束,会重新启动新的adbd进程,此时它有root权限。其次,android系统用的是linux的内核,在linux中,对于用户最大允许运行的进程数有限制,由于RageAgainstTheCage程序创建的大量僵尸进程使shell用户拥有的进程数达到最大值,也就是说shell用户的进程数已经满了,导致新启动的adbd进程无法降权为shell用户,从而始终以root用户身份运行。这时候我们在电脑中执行adb
shell命令时发现已经进入root shell了。
从上面的分析我们可以知道,要能够root成功必须满足两点:
1、系统必须已经设置每个用户允许运行的最大进程数(官方的Android2.1、2.2好像都已经设置,2.3的不是很清楚)。
2、必须要在新启动的adbd进程降权为shell用户前创建足够多的进程。但是因为系统进程调度的随机性,并不能保证每一次都能满足这个要求,这也就是为什么网上说多试几次就会成功。
执行完rageagainstthecage程序后其实已经获得了root权限,但是每次这么做非常麻烦,所以还应该设置一些永久性的东西,主要是上传几个程序到系统中并设置相应权限。这几个程序分别是:
su:使得非root用户能够以root身份运行程序。
busybox:系统工具包,包含很多的系统使用工具。
SuperUser.apk:授权管理软件包,为需要root身份运行的程序授权。
这里再说一下为什么要上传上面几个程序。su本来是linux系统中的一个命令,意思是switch
user,可让一个普通用户切换为root用户,并可临时拥有root用户的权限。比如以普通用户的身份运行su
-root命令,能从当前用户切换到root用户,取得root的权限。可见,su是达到我们root目的一个便捷途径。
android内核尽管用的是linux,但对su的使用做了限制,只有root和
shell用户才有权运行su程序,其他用户运行都会返回错误。于是,获取android系统root权限的目标就是去掉这个限制,所以我们要替换掉系统中的su程序(位于/system/bin/或/system/xbin/目录),替换后的su将不检查实际用户权限,这样普通的用户也将可以运行su程序,
从而提升自己的权限。
替换su后,我们可以提升自己的权限,恶意程序也可以通过su来提升权限,那这样的结果将会是灾难性的。为了防止不良软件也取得root用户的权限,当我们在root的过程中,还会给系统装一个程序superuser.apk,放到system/app下面。当某些程序执行su指令想取得系统最高权限的时候,superuser就会自动启动,拦截该动作并作出询问,当用户认为该程序可以安全使用的时候,那么我们就选择允许,否则,可以禁止该程序继续取得最高权限,这也算是给系统加了一层保险吧!
使用android漏洞来直接root,这是最原始最纯洁的方式。不过这种方式root的成功率已经非常低了,因为随着android系统的升级,漏洞也在一个一个的被堵上。很多手机上的“一键root”程序就是利用这种方式。
(二)如果官方recovery功能允许, 可以刷入包含su和root管理程序的刷机包。
1、什么是recovery?
recovery是一个小型的手机系统,类似于windows
PE或dos。可以理解为手机上装了双系统,一个是android系统(位于rom中的/system分区),一个是recovery(位于rom中的/recovery分区)。如果android系统被毁了,手机还是可以进入recovery的。
recovery的使用原理就和电脑上的ghost软件一样,起到系统备份与还原作用,也可以升级内核,刷补丁等。recovery的编写是和系统基带联系在一起的,不同的基带版本不能乱刷。
有关recovery的介绍,可参考:
2、通过recovery怎样获取root权限?
原理很简单,进入recovery后,/system分区就变成了rom中的一个硬件盘块,对它当然可以自由修改。我们把su放到/system/xbin文件夹下,赋予rwsr-sr-x权限,基本就大功告成了。
(三)如果官方开放bootloader,
可以刷入第三方recovery,其余的步骤同上一步。
每部手机都自带官方的recovery,但有些官方的recovery功能简单,不能刷入刷机包,有的只能刷入由厂商签名的刷机包。于是我们就要用到第三方的recovery,这是目前最常见的情况。
1、什么是bootloader?
bootloader是嵌入式系统在加电后执行的第一段代码,它的作用类似于个人电脑中的BIOS固件程序,在完成CPU和相关硬件的初始化之后,再将操作系统映像装在到内存中,然后跳转到操作系统所在的空间,启动操作系统运行。
为了深入了解什么是bootloader,要先了解android的启动流程:
2、bootloader加锁
为了安全起见,有些手机厂商会对bootloader加锁。加锁的bootLoader在加载操作系统映像或其它重要固件之前,会先对其进行签名校验,签名不符的话就中止启动流程,以此来防止用户刷入修改过的包。如HTC手机在刷机前需要保证S-OFF,S-OFF代表什么呢?S代表SecurityLock安全锁,保护锁的意思,S-OFF就是关掉锁保护。再有就是Motorola的手机,有很多型号的bootLoader是锁住的,因此,在刷机前要先解锁bootLoader。
3、如何解锁bootloader?
4、如何刷入第三方recovery?
版权声明:本文标题:linux 手机root原理,手机root原理 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1715888832h656144.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论