我所见过的Android设备的生根说明通常具有以下形式:
运行Gingerbreak,单击“根设备”
观察
Gingerbreak.apk
是否已神奇地安装(可能与Superuser.apk
等一起安装),并享受您的rooty善良。我想知道的是:生根实际上是如何发生的? Gingerbreak会做什么?
我知道生根的最终结果:
busybox
存在并且正在工作安装了
su
并控制对Superuser.apk
的访问权限由BusyBox提供的各种实用程序(可选?)
我也认为我了解Gingerbreak入门的基本思想-它利用了一些本地特权升级漏洞,并利用其新发现的功能来部署超级用户以及其他必要的东西。我想知道的是root安装程序如何部署和激活Superuser。似乎仅将
su
放在正确的位置是不够的-如何获得允许的root用户访问权限? 如何利用Gingerbreak在利用后对其他应用程序的访问进行监控?
Gingerbreak在利用后如何实现并保护根访问权限?
#1 楼
APK和漏洞利用程序通常的操作如下:APK将正确的文件放在正确的位置以运行漏洞利用
APK运行漏洞利用
/>漏洞利用程序试图获得root访问权限
如果成功,则漏洞利用程序将/ system重新安装为可读写状态并运行安装程序脚本
安装程序脚本尝试安装su二进制文件和超级用户APK,然后重新启动
作为示例,此页面详细介绍了rageagainstthecage漏洞如何尝试获得更高的特权。
评论
谢谢。我认为这进一步缩小了我的实际问题-安装程序脚本的确切作用是什么?或者在哪里可以找到一份副本以供阅读?我看到的大多数文档都是非常不透明的-“下载此APK,它可以正常工作”,并带有指向一些随机文件共享网站的链接。
– Michael Ekstrand
2012年5月10日15:09
su允许在类似Unix的环境(Android所基于的环境)中提升特权。安装su二进制文件后,应用程序/脚本可以使用su和sudo命令来运行和访问文件系统中通常限于普通用户的部分。从本质上讲,这就是为什么要扎根手机的原因-能够访问系统的“受限”部分并能够执行普通用户不允许执行的命令。
– Sparx
2012年5月11日在7:51
#2 楼
经过大量的挖掘,我终于弄明白了。我错在哪里了-它不在安装脚本中;所有要做的就是将su
和Superuser.apk
二进制文件放在正确的位置,并设置其权限。因此,实际上就像将文件拖放到位并设置权限一样简单。没有魔术接线。魔术发生在
su
二进制文件中(请参见源代码和此问题)。我(错误地)以为su
是标准的su
,并且事情通过某种方式连接起来,以通过Superuser.apk
适度访问该二进制文件。错。实际发生的事情要简单得多:Superuser提供了
su
的自定义实现,该实现可验证通过Superuser及其授权的应用程序数据库的访问。因此,生根过程就像@Sparx一样简单。部署的软件包含魔力。
评论
我认为这错过了一件重要的事情:su本身根本不是魔术,它的唯一魔力是OS对其进行了特殊对待。当操作系统询问是否允许特定的应用程序提升权限时,它所要做的就是返回“ OK”或“ Not OK”。如果缺少它,或者总是返回“ Not OK”,那么普通应用程序将永远无法获得root用户权限。因此,生根基本上是将su二进制文件放置到系统上受保护的位置的过程,该二进制文件有时可能会返回“ OK”,这是不允许这样做的。
–RomanSt
13-10-13在15:28
所有要做的就是将su和Superuser.apk二进制文件放在正确的位置,并设置其权限,就好像没有漏洞利用就很容易一样,漏洞利用就是魔术。
– Alex
2014年10月12日13:44
@Alex不完全是。我专门试图弄清楚漏洞利用后的根源。在这种情况下,因为我可以通过ADB进行root访问,所以我不想不必要地运行漏洞利用程序。
– Michael Ekstrand
14-10-17在14:19
@RomanSt不太正确,它只是具有setuid位,即使它调用的用户不是,它也可以以root身份运行
– yoel halb
20年12月1日在17:33
评论
另请参阅:android.stackexchange.com/questions/236/…