生根如何工作?


23

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

我所见过的Android设备的生根指令通常采用以下形式:

  1. 下载 Gingerbreak.apk
  2. 运行Gingerbreak,单击“根设备”
  3. 观察Superuser.apk已经神奇安装的busybox东西,可能与其他东西一起,并享受您的根本天赋。

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

我了解生根的最终结果:

  • su 存在并正在工作
  • Superuser.apk 已安装并控制对 su
  • 由BusyBox提供的各种实用程序(可选?)

我还认为我了解Gingerbreak如何开始的基本思想-它利用了一些本地特权提升漏洞,并利用其新发现的功能来部署超级用户以及其他必要的东西。

因此,除非我在上面提出的某些理解上有误,否则我想知道的核心是root安装程序如何部署和激活Superuser。似乎仅仅放在Superuser.apk正确的位置是不够的-如何获得允许的root用户访问权限?如何挂钩它来调节对其他应用程序的访问?

漏洞利用后Gingerbreak会执行哪些操作以启用并保护根访问权限?


Answers:


16

APK和漏洞利用程序的操作(通常)如下:

  • APK将正确的文件放在正确的位置以运行漏洞利用程序
  • APK运行漏洞利用程序
  • 该漏洞试图获得根访问权限
  • 如果成功,漏洞利用程序将/ system重新安装为读写状态并运行安装程序脚本
  • 安装程序脚本尝试安装su二进制文件和超级用户APK,然后重新启动

例如,此页面详细说明了rageagainstthecage攻击如何尝试获取提升的特权。


2
谢谢。我想,这进一步缩小了我真正的问题-什么确切不安装脚本呢?或者在哪里可以找到一份副本以供阅读?我看到的大多数文档都是非常不透明的-“下载此APK,它可以工作”并带有指向一些随机文件共享网站的链接。
Michael Ekstrand'5

su允许在类似Unix的环境(Android所基于的环境)中提升特权。安装su二进制文件后,应用程序/脚本可以使用su和sudo命令来运行和访问文件系统中通常限于普通用户的部分。从本质上讲,这就是为什么要扎根电话的原因-能够访问系统的“受限”部分并能够执行普通用户不允许执行的命令。
Sparx

9

经过大量的挖掘,我终于弄明白了。我错在哪里了-它不在安装脚本中;所有要做的就是将su和和Superuser.apk二进制文件放在正确的位置并设置其权限。因此,实际上就像将文件拖放到位并设置权限一样简单。没有魔术接线。

魔术发生在su二进制文件中(请参阅源代码以及此问题)。我(错误地)认为这su是一个标准su,并且事情以某种方式连接起来,以通过适度地访问该二进制文件Superuser.apk

错误。实际发生的事情要简单得多:超级用户提供了一个自定义实现,su用于验证通过超级用户及其授权的应用程序数据库的访问。

因此,生根过程就像@Sparx所说的一样简单。部署的软件包含魔力。


我认为这遗漏了一件重要的事情:su它本身根本不是魔术,它的唯一魔术是OS对其进行特殊对待。当操作系统询问是否允许特定的应用程序提升权限时,它所要做的就是返回“ OK”或“ Not OK”。如果缺少它,或者总是返回“ Not OK”,那么普通的应用程序将永远无法获得root权限。因此,生根基本上是将su有时可能返回“ OK” 的二进制文件放入系统上受保护的位置的过程,该操作不应这样做。
RomanSt

4
all that has to do is put the su and Superuser.apk binaries in the right place and set their permissions仿佛没有漏洞利用就容易了,漏洞利用就是魔术。
亚历克斯(Alex)

1
@Alex不完全是。我专门试图弄清楚漏洞利用后的根源。在这种情况下,因为我可以通过ADB进行root访问,所以我不想不必要地运行漏洞利用程序。
Michael Ekstrand
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.