由于无系统 root 可以使用几年,因此检测设备是否已 root 变得“更难”。我开始寻找一种可能的解决方案来检测设备是否无系统地植根,但我仍然无法找出解决方案。检查文件是否存在于给定路径(在 /system 中)是没有意义的,因为如果设备无系统地植根,它就不会存在。同样寻找管理 root 访问的应用程序可能没有意义,因为用户可能没有安装它们/或者只是使用其他的,不如 Magisk、SuperSu 等流行。
所以,我的想法是执行“su”命令,然后检查 shell 是否在 root 模式下运行(“#”)或不(“$”)。但是我如何检查它以哪种模式运行?据我所知,在简单地执行命令后:
Runtime.getRuntime().exec("su");
由于不再使用“SU 用户”(?),进程被终止。
简单查看我对 adb 用法的含义:
user@user:~$ adb shell
device:/ $ su
如果执行此命令后变为:
device:/ #
将知道设备是否已植根,如果返回“权限被拒绝”将知道设备未植根。我可以在 Android 应用程序中实现类似的功能吗?