我的Android应用程序是否在根设备上运行?

我的Android应用程序是否在根设备上运行?,android,Android,可能重复: 我正在创建一个Android应用程序,我想知道我的应用程序是否在根设备上运行。 我在谷歌上做了深入研究,但连一个解决方案都找不出来 关于stackoverflow之前也曾提出过类似的问题,但没有任何解决方案。 这些链接中提供的解决方案在我的设备上不起作用。 甚至Runtime.exec(“su”)也不能工作 有没有办法确定设备是否已根目录?如果我们不能做到这一点,谷歌如何才能发现该设备是否有根 当我执行Runtime.exec(“su”)时,我得到异常10-15 18:36:

可能重复:

我正在创建一个Android应用程序,我想知道我的应用程序是否在根设备上运行。
我在谷歌上做了深入研究,但连一个解决方案都找不出来

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

有没有办法确定设备是否已根目录?如果我们不能做到这一点,谷歌如何才能发现该设备是否有根

当我执行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为根的。
考虑到它是基于shell的,那么上提供的解决方案至少应该可以工作,但这也不起作用。

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

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

您能否提供一些有关
Runtime.exec(“su”)
如何不工作的相关日志输出?有例外吗?google play上有一些应用程序可以帮助你确定你的手机是否有根。让我们来看看这里:@ SS1271:我已经更新了帖子。我得到一个异常10-15 18:36:36.445:W/System.err(668):java.io.IOException:运行exec()时出错。命令:[su]工作目录:空环境:null@user1746693是的,thx的更新,请您发布一些您的代码以及?您似乎没有传递正确的参数,或者出现了其他错误。您能否提供一些有关
Runtime.exec(“su”)
如何不工作的相关日志输出?有例外吗?google play上有一些应用程序可以帮助你确定你的手机是否有根。让我们来看看这里:@ SS1271:我已经更新了帖子。我得到一个异常10-15 18:36:36.445:W/System.err(668):java.io.IOException:运行exec()时出错。命令:[su]工作目录:空环境:null@user1746693是的,thx的更新,请您发布一些您的代码以及?似乎您没有传递正确的参数,或者是其他问题。