如何创建拥有root访问权限的Android应用程序?

33

我发现有很多应用程序需要root访问权限。

他们是如何创建这些应用程序的?他们从哪里获得所有资源?是否有关于root访问权限的官方文档?还是需要一些hackish方式?

还有哪些访问需要root访问权限呢?代理是否是其中之一?我没有在任何地方找到有关访问代理的文件。

=== 更新 ===

我认为有些人误解了我的问题。我知道手机需要被root才能获得root访问权限。但我想知道的是,需要root访问权限的是哪些服务?有些我看到的是无线热点共享,另一个是清除缓存(难道只是清除缓存就需要root访问权限吗?),还有其他的应用程序。是否有列表可以列出我从root访问权限中获得的各种优势?


我猜,我想问的问题是:你为什么想要获得 root 访问权限?你想要实现什么目标?难道你不能在不 root 的情况下完成吗? - Aleadam
嗯,我只是在想,有时候发现没有一种常规的方法来做事情,我不知道是否可以通过根访问来实现。 :) - Fugogugo
5个回答

22

顺便提一下,回答你的问题:需要哪些需要 root 访问权限?- 手机需要先经过“root”处理。这种方法有点像黑客手段,而且会因为机型的不同而有所差异,但通常很容易实现。你可以在 http://forum.xda-developers.com 上找到每个手机所需的所有详细信息。 - Aleadam
我可以使用哪些命令?所有需要 su- 的 Linux 命令吗? - Fugogugo
1
好的,更新使它成为完全不同的问题 :) 我不能告诉你需要 root 的任务列表,但肯定需要对 /system 进行读写访问(如 root explorer 或 TiBu),或直接访问 /dev 中的设备或 /etc 中的配置。我认为最直接的答案是允许你绕过 Android API 的限制。我只用它做了一些非常基本的东西(用于 Captivate 的 lagfix 控制应用程序,可以在这里找到:http://forum.xda-developers.com/showthread.php?t=917727)。 - Aleadam

5

应该适用于大多数版本:

try {
    Runtime.getRuntime().exec("su -c reboot");
} catch (IOException e) {
} 

2
许多应用程序依赖于以su为前缀的shell脚本/命令。
我认为在Android API中没有请求其他上下文或提升特权的方法。

2

使用此函数可以在项目的任何地方使用它。

 public static void sudo(String... strings) {
    try {
        Process su = Runtime.getRuntime().exec("su");
        DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());

        for (String s : strings) {
            outputStream.writeBytes(s + "\n");
            outputStream.flush();
        }

        outputStream.writeBytes("exit\n");
        outputStream.flush();
        try {
            su.waitFor();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        outputStream.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

使用上述函数并使用它来执行任何类型的shell命令,需要使用root用户权限。
  sudo("iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080");

0
通常,已经获取了 root 权限的应用程序只是使用像“su ...”这样的命令,如果没有 root 访问权限,它们将无法使用。通过这些命令执行,它们可以访问所有内容(例如删除系统应用程序或加速您的 Android 设备)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接