如何自行为某应用添加root权限?


11

我有什么办法故意向某些应用授予root权限?当特定应用程序请求超级用户权限时,不是通过SuperSU自动进行,而是通过某种工具选择一个应用程序并授予其超级用户权限。

例如,我将我喜欢的文本应用程序添加到批准的列表中,然后可以通过该应用程序打开根文件。

Answers:


13

否。您应该要求应用开发者这样做。

在类似UNIX的系统上,权限通过称为UID的方式进行管理。

每个进程都有一个进程,它决定了他们可以访问的内容。此外,还有一些具有其成员可以使用的权限的组。当应用程序具有权限时,例如将Write to SD card它们放入具有此权限的组中。

根权限是一个例外,因为它们不是在应用的清单中声明的​​,而是在其代码中声明的。根也不是一个组,而是一个单独的UID(因为它是一个单独的用户),因此应用程序使用起来并不容易。 必须明确编写具有root权限的应用程序。

这种工作方式是每次应用程序要以root用户身份执行操作时,它都必须请求su二进制文件来代替。su然后将询问管理这些权限的应用程序(例如SuperSU)是否允许该应用程序获得root访问权限。如果不是,它将提示您允许或拒绝它。然后,该操作将以root而不是应用用户的身份执行。这些操作不是应用程序的组成部分,而是外部可执行文件。

从理论上讲,可以将其添加到应用程序中,但这将是一个不平凡的过程,需要掌握编写smali代码的知识,这是Dalvik虚拟机(运行apk文件的系统部分)的内部格式,称为斯马里语。即使这样,如果该应用程序允许其他应用程序访问它,也将存在巨大的安全风险:它不知道如何将特权根访问权限与其正常访问权限分开。因此,实际上这是不可行的。


1
对于那些不知道什么是smali的人:这是Android的dalvik虚拟机代码的汇编方言,通常用于反向工程dex文件中。可能有点不清楚:该应用程序必须自己以编程方式成为root用户。这就是开发人员必须包含它的原因。只要应用程序不行使其根权限,将其添加到SuperSU就无济于事。
ce4 2012年

因此,如果程序员不对应用进行编码以接受打开根文件,则无法通过我喜欢的文本编辑器打开一些根文本文件?
AnDroDroo 2012年

1
完全正确。举个例子:如果该应用程序不会以root身份启动,并尝试打开一些“ root文件”,则只会得到一个“ permission denied”(拒绝权限)-因为访问该文件仍将使用应用程序UID(它会不会要求超级用户权限打开它)。另一方面,如果应用程序使用根UID(即su <app>)启动,它将以根用户身份访问该根文件,从而获得许可。
伊齐

这就是为什么我无法使用其他一些文本编辑器来读取根文件的原因:)。
2012年

1
@Izzy AFAIK,您无法使用根UID执行常规的Android应用,也无法更改正在运行的应用的UID。您唯一可以做的就是使用su执行命令行程序,因此要执行具有管理员权限的命令。
罗伯特

1

我找到了一种可以帮助您的方法。我用它来授予对Tasker的 root访问权限。

如果使用终端仿真器使用以下命令授予对文件夹的读取但不写访问权限

  • su
  • chmod 775 /location/of/folder/

那么您的文本编辑器将能够读取该目录,因此,如果您随后尝试将文件保存在该文件夹中,则它将尝试请求root权限。

它也可能只给出写错误。


/location/of/folder/从根到顶部的所有目录都必须可读/可遍历。SELinux也可能拒绝访问。因此,这种方法很少实用。
Irfan Latif
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.