狼行绝路 发表于 2011-1-22 23:46

无聊水一下--漫谈Defy的Root

一、Root的目标
要说root就要先说什么是root。
小D用的android系统是使用类似linux的权限管理的。一个文件(或文件夹)的权限被分为了r(读)、w(写)、x(执行)和s(suid与sgid)。

系统里有一个最强大的用户那就是root,他可以有控制以上所有权限的能力,万能的主宰。有了这个权限,想把小D整的起不起来也是易如反掌的。

然而,我们一般只能有普通用户的权限,这样root不让我们访问的文件,我们就访问不了; root不让我们修改的文件,我们就修改不了;想装个软件,执行个程序也要得到批准。总之,就是不爽。所以,我们的目标就是要把root的权利夺过来,我的地盘我做主嘛!


二、获得Root权限的途径
有时候一些操作需要root权限,而我们只想临时给一个用户root权限,用完后就收回。要如何才能做到这样呢?
不可否认android是那么的先进,他解决的方法是提权,就是临时改变用户的权限。这个操作是可以通过系统已经提供的2个API可以实现的,那就是setuid和setgid。这个不是漏洞,是先进的权限管理方法。

有人看到这里,或许会说,这样的话只要写个程序,用一下这两个API不就root完了,还用那么复杂吗?
没错,高手们就是用这2个API写出了一个叫su的程序,只要执行这个程序就能瞬间获得root权限了。
不过这里有个小问题,那就是这两个API只有在有s(suid与sgid)权限的程序里才能起作用。
也就是su要先获得suid和sgid权限才能起作用,而s权限只有root才有权决定给谁。

总结一下,要获得root权限需要执行su,要让su执行先要获得root权限。
如果把root权限比作鸡蛋,su比作鸡的话,我们到这里遇到了个现有鸡还是先有蛋的问题了。

当然,这难不倒我们的高手们。他们可以空手变出一只鸡来。那就是利用系统漏洞直接获得root权限。
在小D的Root工具里,我们可以找到一个叫rageagainstthecage的文件。
没错,这个DD就是倚天剑、屠龙刀,空手套白狼的利器。
运行这个之后就可以临时获得root权限,之所以称之为临时是因为,小D一重启就会恢复原样了。

三、Root的步骤
这里只是简单说一下,首先将rageagainstthecage和su两个文件弄进手机里。
接着执行rageagainstthecage获得root权限。
最后通过给su附上suid和sgid权限。

rageagainstthecage会造成系统不稳定,不过不用担心,这个影响重启手机没有了。
重启后,我们又只有普通用户的权限了,不过现在由于我们已经有个一个获得权限的su,所以只要执行su就能重新获得root权限。

到此,理论上我们已经root成功了。不过由于root权限很危险,所以最好有个界面来管理。
于是我们就再装个Superuser.apk这个好DD。他就是负责管理su的。好了,一切OK。

三、总结
如此复杂的工程,而我们却能通过一键完成。那是因为众多高手们利用他们的智慧,把这些操作集成到了一起。
在享受一键root的轻松时,让我们一起从心底感谢那些高手大侠们吧!

rageagainstthecage利用的是fork炸弹,就像有些计算机病毒一样,不断申请系统资源,到最后只剩下一点点的时候,系统会出现个漏洞。
用这个漏洞的好处我个人认为就是不会影响小D,重启后就会恢复正常,不留痕迹。
坏处是理论上会失败,不过应该概率极低。碰到的同学可以考虑去买张彩票。


PS:以上纯属个人见解,如有不足望高手指正。

__画地为牢 发表于 2011-1-23 11:38

了解了,不错

feng.Z.Z 发表于 2011-1-23 11:51

哇!原来这样。。。。

1150001106 发表于 2011-3-29 11:41

谢谢分享!!!
页: [1]
查看完整版本: 无聊水一下--漫谈Defy的Root