【问题标题】:Is my Android app running on a rooted device? [duplicate]我的 Android 应用程序是否在有根设备上运行? [复制]
【发布时间】:2012-10-05 07:36:09
【问题描述】:

可能重复:
Determine if running on a rooted device

我正在创建一个 Android 应用程序,我想知道我的应用程序是否在有根设备上运行。
我在 Google 上进行了挖掘,但连一个可靠的解决方案都想不出来。

以前在 stackoverflow 上提出过类似的问题,但没有任何解决方案。 这些链接中提供的解决方案不适用于我的设备。 甚至 Runtime.exec("su") 也不起作用。

Determining if an Android device is rooted programatically?

Determine if running on a rooted device

Testing if a phone is rooted

有没有办法查出设备是否已root?如果我们做不到,谷歌如何找到设备是否已root?

当我执行 Runtime.exec("su") 时,出现异常 10-15 18:36:36.445: W/System.err(668): java.io.IOException: Error running exec()。命令:[su] 工作目录:null 环境:null

public static boolean isDeviceRooted_BySu() {
    try {
        Log.d("BySu", "BySu");
        Process p = Runtime.getRuntime().exec("su");
        return true;
    } catch (IOException e) {
        e.printStackTrace();
    }
    return false;
}

我从 ADB shell 中检查过,它给了我一个“#”提示符,所以我可以确定该设备至少是 Shell rooted。 鉴于它是 shell 根的,那么Determine if running on a rooted device 上提供的解决方案至少应该可以工作,但这也不起作用。

【问题讨论】:

  • 您能否提供一些有关Runtime.exec("su") 不起作用的相关日志输出?有什么例外吗?
  • google play 上有一些应用程序可以帮助您确定您的手机是否已root。让我们看看这里:play.google.com/store/search?q=root+checker&c=apps
  • @ss1271:我已经更新了帖子。我收到异常 10-15 18:36:36.445: W/System.err(668): java.io.IOException: Error running exec()。命令:[ su ] 工作目录:null 环境:null
  • @user1746693 是的,谢谢更新,你能不能也发布一些你的代码?似乎您没有传递正确的参数或其他错误。

标签: android


【解决方案1】:

没有确定的方法。您可以检查系统属性(“ro.secure”等),搜索 SUID su 二进制文件,尝试运行它,搜索一些“超级用户”应用程序等。但是,可能有一个 foobar 二进制文件实际上是 su,或任何其他为您提供 root 权限的程序。可能有一个“常规”二进制文件利用一些 Android 漏洞来获取 root 权限等。如果您检查每个文件的 SUID,您可能会接近。谷歌可能正在使用部分/所有这些的组合。

【讨论】:

    猜你喜欢
    • 2011-09-25
    • 2012-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-27
    • 2023-03-14
    • 1970-01-01
    相关资源
    最近更新 更多