【问题标题】:How does su work on android? And what are the pre-requisites for it to work? What is rooting on Android?su如何在android上工作?它起作用的先决条件是什么?什么是植根于Android?
【发布时间】:2012-04-19 03:49:31
【问题描述】:

可能重复:what does the su mean: process = Runtime.getRuntime().exec("su");

我厌倦了尝试所有不同的事情,但我仍然无法理解 su 什么时候可以工作。什么是在 Android 中生根设备?请有人帮我解决这个问题。

我回答了以下问题。我在那里发布的解决方案,我测试过,它也有效。

Adding full permission for a image file in android.

这是我的问题:

我试过关注。

复制su。

已安装 SuperUser.apk,

从我调用 su 的程序中,然后使用新创建的进程我执行了所需的操作。

这有 2 个结果。

1) 当设备被root时(比如在z4root中执行Permanent root选项),它起作用了,它改变了系统文件的权限。

2) 设备未root时,无法正常工作。

请解释一下 z4root 执行了哪些额外的操作以使任务成为可能。请简要说明。

如果我的问题不清楚,请告诉我。非常感谢..

【问题讨论】:

标签: android root su


【解决方案1】:

z4root(或任何其他 root 程序)运行一些漏洞以将其自己的 uid(用户 ID)更改为 0(root)。您可以将其视为执行某种 hack 并诱使内核认为它实际上有权成为 root(然后,如果 z4root 是一种病毒,它可以对您的手机执行所有操作,从安装键盘记录程序到将其变砖)。当然,如果有可能以这样的方式欺骗​​内核来给你 root 访问权限,那么它被认为是一个安全漏洞(任何应用程序都可以这样做并执行一些恶意操作)并且通常会在未来的内核更新中得到修复(这就是 z4root 可能不会如果你升级你的固件就可以工作)。

当 z4root 将其 uid 设置为 0 时,它会执行以下操作:将/system 分区重新挂载为可写(默认为只读),复制 su 二进制文件、Superuser.apk 和 busybox,然后将/system 重新挂载为只读。

那么当通常应用程序具有与父进程相同的 uid 时,su 二进制文件如何在不执行“黑客”操作的情况下为您提供 root 访问权限?这是因为 su 二进制文件设置了 set-uid 标志,并且始终以 uid 0(root)身份运行。

现在,如果您已将 su 二进制文件复制到 /system/bin,那么您必须具有 root 访问权限,这意味着您只是忘记更改所有者/权限 (chown root:root /system/bin/su; chmod 6755 /system/bin/su),但您仍然需要 root 访问权限才能执行此操作。

【讨论】:

  • 谢谢..但是关于如何以编程方式将 Uid 更改为 0 的任何线索..?
  • @happy2Help 除非您是 root (uid 0),否则您无法更改您的 uid。只允许 root 更改 uid,否则任何用户都可以赋予自己提升的权限。答案:调用已设置 setuid 标志的可执行文件(在大多数 Linux 上,默认情况下只有 su 和 sudo 有,但您可以创建自己的 - 但是您需要 root 访问权限才能将其设置为 root)。
  • 我认为第 3 段及以下是不正确的。 Android 的 su 不使用 setuid 标志,因为 Android 不尊重标志。取而代之的是,Android 的 su 联系了一个守护进程 daemonsu,它直接由 init 分叉。所以你使用su运行的程序不是su的子进程,而是daemonsu的子进程。
  • @WuYongzheng 这个答案已经有两年多了,当时我非常有信心 Android 使用了 setuid 标志,因为这就是我手机的根源(下载图片 -> 解压 -> 添加 su 二进制文件,setuid -> 打包 -> 闪光)
  • @matix2267 没有注意到日期。刚检查。删除 setuid 位已在 Android 4.3 及更高版本中实现。
【解决方案2】:

当您 root 设备时,您会覆盖或修改 ROM 中的操作系统映像以授予您提升的权限。在用户模式下安装应用程序不可能让您在任何地方的任何版本的 Linux 中提升权限。如果任何用户都可以通过“复制 su”来使自己成为 root,那么就不会有安全之类的东西。

【讨论】:

  • 操作系统映像的差异到底是什么是我想要了解的。感谢您的回复
  • “安装应用程序...不可能给你提权” 我同意它不应该,但这通常是设备生根方法的工作方式。利用安全漏洞将当前的非 root 进程升级为 root,然后进行一些永久性更改以允许以后更轻松地提升权限(例如,将 su 复制到通常只读的“系统”文件系统中)。跨度>
【解决方案3】:

我不确定你在问什么,但这似乎是一件简单的事情。您正试图成为“超级用户”,或以超级用户权限做事。只有在您拥有实际权限的情况下,您才能执行此操作,并且授予当前在您的设备上运行的用户帐户。通常你没有这个权利。

请记住,“超级用户”与“root”是一样的

  • 如果您“root”您的设备,则意味着您授予自己成为超级用户的权利。你可以做一些需要成为超级用户的事情:“su”是这些命令之一,因为它说“以超级用户身份登录”。您显然需要超级用户权限才能成为该用户。
  • 如果您还没有根设备,您就没有权限做超级用户可以做的事情。所以调用su 是行不通的。

因此,如果您的设备已使用 rooted,则您只能执行 root 的操作。

【讨论】:

  • “因此,如果您已经对设备进行了植根操作,那么您只能进行植根操作” 植根设备之前和之后的区别是我想要理解的。在操作系统内部添加了一些可以使 su 工作的东西?或者它是什么?
  • 这样看:您以用户身份在您的设备上“登录”,就像在任何其他计算机上一样。该用户无权执行超级用户操作。您运行的所有内容(应用程序等)都以您的权限运行。您所做的更改是允许随机用户(例如您)成为 root。像这样看它:通常就像您登录图书馆计算机一样:您不是管理员。 “root”意味着“入侵”计算机,因此默认用户将成为管理员。
猜你喜欢
  • 2011-11-19
  • 2010-11-08
  • 2019-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-29
  • 2013-02-13
相关资源
最近更新 更多