常规root的检查方案

简介: root

1.检测路径1

public boolean c() {

    String[] strArr = {"/system/bin/", "/system/xbin/", "/system/sbin/", "/sbin/", "/vendor/bin/"};
    int i = 0;
    while (i < 5) {
        try {
            if (new File(strArr[i] + "su").exists()) {
                return true;
            }
            i++;
        } catch (Exception e) {
        }
    }
    return false;
}

public String o() {

    return a("ro.kernel.qemu", "0");
}

2.检测路径2

public static boolean a() {

    String[] strArr = {"/system/xbin/", "/system/bin/", "/system/sbin/", "/sbin/", "/vendor/bin/", "/su/bin/"};
    try {
        int length = strArr.length;
        for (int i = 0; i < length; i++) {
            String str = strArr[i] + "su";
            if (new File(str).exists()) {
                String a = a(new String[]{"ls", "-l", str});
                f.b("cyb", "isRooted=" + a);
                if (TextUtils.isEmpty(a) || a.indexOf("root") == a.lastIndexOf("root")) {
                    return false;
                }
                return true;
            }
        }
    } catch (Exception e) {
    }
    return false;
}

3.检测属性

public static boolean checkRootMethod1() {

    if (PatchProxy.isSupport(new Object[0], null, changeQuickRedirect, true, 3217, new Class[0], Boolean.TYPE)) {
        return ((Boolean) PatchProxy.accessDispatch(new Object[0], null, changeQuickRedirect, true, 3217, new Class[0], Boolean.TYPE)).booleanValue();
    }
    String str = Build.TAGS;
    return str != null && str.contains("test-keys");
}

4. 检测路径3

public static boolean checkRootMethod2() {

if (PatchProxy.isSupport(new Object[0], null, changeQuickRedirect, true, 3218, new Class[0], Boolean.TYPE)) {
    return ((Boolean) PatchProxy.accessDispatch(new Object[0], null, changeQuickRedirect, true, 3218, new Class[0], Boolean.TYPE)).booleanValue();
}
try {
    if (new File("/system/bin/su").exists() || new File("/system/xbin/su").exists()) {
        return true;
    }
} catch (Exception e) {
}
return false;

}

5.检测包名

public static boolean checkRootMethod3() {

if (PatchProxy.isSupport(new Object[0], null, changeQuickRedirect, true, 3219, new Class[0], Boolean.TYPE)) {
    return ((Boolean) PatchProxy.accessDispatch(new Object[0], null, changeQuickRedirect, true, 3219, new Class[0], Boolean.TYPE)).booleanValue();
}
try {
    if (new File("/system/app/Superuser.apk").exists()) {
        return true;
    }
} catch (Exception e) {
}
return false;

}

相关文章
|
2月前
|
测试技术 数据库 数据安全/隐私保护
测试备份的作用
测试备份的作用
51 5
|
6月前
|
弹性计算 运维 Unix
检查当前是不是root用户
【4月更文挑战第29天】
46 2
|
6月前
|
存储 算法 C语言
【C/C++ 应用开发 检测文件 】详解 C/C++ 中常用的 5 种文件存在检查方式
【C/C++ 应用开发 检测文件 】详解 C/C++ 中常用的 5 种文件存在检查方式
207 0
|
存储 Shell Linux
Shell命令切换root用户、管理配置文件、检查硬件
  与其他基于UNIX的系统一样,Linux也可以被多个人同时使用。多用户功能能够让多人在单个Linux系统上拥有账户,并且保护自己的数据不被他人破坏。
281 0
|
Shell Linux
检查你是否是root用户
检查你是否是root用户
148 1
|
SQL 前端开发 关系型数据库
MySQL only_full_group_by 1055 报错的三种解决方案,临时关闭有影响吗?
当我们迁移到 MySQL 5.7+ 的版本时,常会碰到 `ERROR 1055 only_full_group_by` 错误,这是 5.7 之后 `SQL_MODE` 默认打开了严格模式导致的错误。说明你代码里有地方写的不严谨。
1396 0
error MSB8008: 指定的平台工具集()未安装或无效。请确保选择受支持的 PlatformToolset 值
error MSB8008: 指定的平台工具集()未安装或无效。请确保选择受支持的 PlatformToolset 值
121 0
error MSB8008: 指定的平台工具集()未安装或无效。请确保选择受支持的 PlatformToolset 值
|
数据安全/隐私保护 iOS开发 MacOS
Pd虚拟机安装系统提示 “网络初始化失败 操作失败 ”的解决方案
为近期升级到 macOS 12.x ,导致 PD16.x 又不能用了,于是又找到了 PD17.x,安装很顺利,但是启动具体虚拟机的时候却提示:网络初始化失败
Pd虚拟机安装系统提示 “网络初始化失败 操作失败 ”的解决方案
|
运维 安全 Oracle
系统无法执行su操作案例以及解决问题过程
系统无法执行su操作案例以及解决问题过程