【问题标题】:android app root or system privilegesandroid 应用 root 或系统权限
【发布时间】:2015-08-17 00:38:09
【问题描述】:

我正在尝试构建一个 android 应用程序,该应用程序可以访问 /data 目录(例如),而无需解析执行 su 后在 shell 上运行的命令的输出。

我的意思是,经过大量研究,并且还查看了一些 root 浏览器的代码,他们在需要 root 权限时所做的就是在执行 su 后解析命令的输出。

我想要的是做类似的事情:

File file = new File("/data");
File[] files = file.listFiles();// get the list array of file
for (int i = 0; i < files.length; i++) {
    File fileItem = files[i];
    System.out.println("FILE NAME: "+fileItem.getName().toString()) {
}

为了实现这一点,我认为应用程序进程必须从执行开始就以 root 身份运行。

以这种方式执行 su 后,我尝试从 shell 运行 APP:

$su
#am start -n com.example.test/.ui.Activity

但是在查看 ps 命令的输出后,我看到应用程序是以用户“u0_a110”而不是 root 身份运行的。

我还尝试了参数--user 0 和--user 1000,结果相同...我认为dalvik虚拟机从父进程中删除了权限。

我还尝试将应用程序转换为系统应用程序,将其移动到 /system/priv-app 并获得相同的结果,(该应用程序的运行用户不是 root 也不是系统)

可能与:

android:sharedUserId="android.uid.system"

在清单中,应用程序至少作为用户系统运行,我尝试以这种方式运行应用程序,并且还放置在 /system/priv-app 中,但手机没有完成启动。

我认为该错误是因为该应用需要使用制造商提供的系统密钥进行签名。

是否可以以 root 或至少 system 身份运行某些 android 应用程序?

我知道,如果我为 ARM(或手机架构)交叉编译一个 linux 应用程序并在 shell 中以 root 身份运行该应用程序,该应用程序将具有 root 访问权限,但是,这是唯一的方法吗?我想用一个 android java 应用程序来实现。

【问题讨论】:

    标签: android system root su


    【解决方案1】:

    如今,Android Rooting 非常普遍。每个人都在要求 Root 他们的 Android 设备时感到神圣,但现在互联网上有很多应用程序可以帮助您在几秒钟内将您的 Android 设备植根。无需了解编码和所有内容。也不需要电脑

    据我们所知,没有办法在这上面添加 Java。您只需从应用商店的 Play 商店安装一些 best root apps 并开始构建您的应用即可。

    通过出色的 UI 和 AI 让您的应用更具吸引力可能会对您有很大帮助 对于 Root 权限,请尝试这些代码

    try {
    
    String[] reboot = new String[] { "su", "-c", "reboot" };
    //-c will cause the next argument to be treated as a command
    
    Process process = Runtime.getRuntime().exec(reboot);
    
    process.waitFor();  //wait for the native process to finish executing.
    
      } catch (Exception e) {
    
    Toast.makeText(getApplicationContext()," Device not rooted.\n Could not reboot...",Toast.LENGTH_SHORT).show();
    
    }
    

    非常感谢!

    【讨论】:

      【解决方案2】:

      据我所知,Java 应用程序无法实现这一点。即使将系统uid分配给应用程序并通过平台认证对其进行签名,它仍然无法获得root权限。 systemuid 的思想是访问一些系统级别的 api,例如控制飞行模式、获取帧缓冲区、强制停止包等,但不以 root 权限控制文件系统。

      【讨论】:

      • 如果你看一下输出:ps | grep 系统,您会看到很多以系统用户身份运行的 android 应用程序,其中一些我几乎可以肯定是 java 应用程序。像 com.android.settings
      • @Mario Rial:在旧设备上可能就是这种情况。但在当前的 Android 5 设备上,只有守护进程以系统或 root 权限运行。
      • 我的测试设备是android 4.4.2,你说的daemon是什么意思?一个android系统服务还是一个普通的linux守护进程?所以在当前的 android 版本中,以 root 或至少系统运行应用程序的唯一方法是为 android 编译一个常规的 linux 应用程序并以 root 运行它?
      • Java 应用可以作为系统用户运行('android.uid.system' + '平台认证' = '系统用户',这是java 应用可以获得的最高权限)。但是系统用户没有root权限。 android.os.Process 定义了 ROOT_UID=0, SYSTEM_UID=1000,所以 java 应用程序无法以 root 身份运行。 'ps | 的根用户进程grep root'是/system/bin/目录下的二进制程序。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-23
      • 2016-09-04
      • 1970-01-01
      • 1970-01-01
      • 2013-06-17
      • 1970-01-01
      相关资源
      最近更新 更多