3

可能重复:
确定是否在有根设备上运行

我想知道手机是否已root,而无需请求root权限。我怎样才能做到这一点?

  1. 测试如果File.Exists("/system/bin/su")?不确定,我想我不能因为权限
  2. 测试是否安装了超级用户应用程序?嗯,我想我需要一个特殊的权限才能使用PackageManager ,并且超级用户不是 onlu su 管理员(例如,我知道 SuperSU)
  3. 尝试运行su不是一种选择,因为它会触发 su 提示,这是我在非 root 应用程序中不想要的

任何的想法?我的目的是获得关于有多少设备被植根的匿名统计数据,显然是在用户同意的情况下:)

4

2 回答 2

0

选项1。可以,不需要任何特殊许可。

选项 2。root 手机可能不附带任何超级用户管理器应用程序。

选项3。正如您所说,这不是检测的好方法。

此外,还有另一个选项是检查 ro.build.tag (使用getprop | grep ro.buil.tagor android.os.Build.TAG)是否包含testkeys字符串。

编辑:对于选项 1,我建议您通过 setuid/setgid 权限查找(即find / -perm -2000 -o -perm -4000,并检查 su 是否在列表中)

于 2012-09-17T02:09:17.570 回答
-3

您不能可靠地做到这一点,因为手机“扎根”的含义并不总是相同的。您将得到的所有建议都是测试一些流行的与根相关的工具。但是无法检测手机是否以不使用这些工具的方式植根。

于 2012-09-17T04:40:25.567 回答