或者,如何在没有rooter的情况下为我的设备生根?

我所见过的Android设备的生根说明通常具有以下形式:

运行Gingerbreak,单击“根设备”
观察Gingerbreak.apk是否已神奇地安装(可能与Superuser.apk等一起安装),并享受您的rooty善良。

我想知道的是:生根实际上是如何发生的? Gingerbreak会做什么?

我知道生根的最终结果:



busybox存在并且正在工作

安装了su并控制对Superuser.apk的访问权限

由BusyBox提供的各种实用程序(可选?)

我也认为我了解Gingerbreak入门的基本思想-它利用了一些本地特权升级漏洞,并利用其新发现的功能来部署超级用户以及其他必要的东西。我想知道的是root安装程序如何部署和激活Superuser。似乎仅将su放在正确的位置是不够的-如何获得允许的root用户访问权限?

如何利用Gingerbreak在利用后对其他应用程序的访问进行监控?

Gingerbreak在利用后如何实现并保护根访问权限?

评论

另请参阅:android.stackexchange.com/questions/236/…

#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 楼

经过大量的挖掘,我终于弄明白了。我错在哪里了-它不在安装脚本中;所有要做的就是将suSuperuser.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