安卓root检测常见手段
字数 1408 2025-08-20 18:17:41

安卓Root检测与绕过技术详解

一、Root检测常见手段

1. 目录特征遍历

检测系统会检查以下常见su路径:

/sbin/su
/system/bin/su
/system/sbin/su
/system/xbin/su
/data/local/
/data/local/bin/
/data/local/xbin/
/su/bin/
/system/bin/.ext/
/system/bin/failsafe/
/system/sd/xbin/
/system/usr/we-need-root/
/cache/
/data/
/dev/

2. 尝试执行Root操作

  • 尝试在受限目录(/data、/system、/etc)创建文件
  • 尝试执行su、find、mount等命令

3. 读取系统属性

  • 检查/system/build.prop中的编译类型(test-keys或release-keys)
  • 获取ro.debuggable、ro.secure的值检测调试状态

4. Root检测指纹分类

(1) 检测Root管理应用

检查以下常见Root管理应用包名:

com.noshufou.android.su
com.noshufou.android.su.elite
eu.chainfire.supersu
com.koushikdutta.superuser
com.thirdparty.superuser
com.yellowes.su
com.topjohnwu.magisk
com.kingroot.kinguser
com.kingo.root
com.smedialink.oneclickroot
com.zhiqupk.root.global
com.alephzain.framaroot

(2) 检测潜在危险应用

com.koushikdutta.rommanager
com.dimonvideo.luckypatcher
com.chelpus.lackypatch
com.ramdroid.appquarantine
com.blackmartalpha
org.blackmart.market
com.allinone.free
com.repodroid.app
org.creeplays.hack
com.baseappfull.fwd
com.zmapp
com.dv.marketmod.installer
org.mobilism.android
com.android.wp.net.log
com.android.camera.update
cc.madkite.freedom
com.solohsu.android.edxp.manager
org.meowcat.edxposed.manager
com.xmodgame
com.cih.game_cih
com.charles.lpoqasert
catch_.me_.if_.you_.can_

(3) 检测Root隐藏应用

com.devadvance.rootcloak
com.devadvance.rootcloakplus
de.robv.android.xposed.installer
com.saurik.substrate
com.zachspong.temprootremovejb
com.amphoras.hidemyroot
com.amphoras.hidemyrootadfree
com.formyhm.hiderootPremium
com.formyhm.hideroot

(4) 检查危险系统属性

ro.debuggable = "1"
ro.secure = "0"

(5) 检查可读写路径

/system
/system/bin
/system/sbin
/system/xbin
/vendor/bin
/sbin
/etc

(6) 检查编译类型

检测是否为"test-keys"

(7) 检查Build.prop属性

ro.build.display.id
ro.build.version.incremental
ro.build.date
ro.build.date.utc
ro.build.type
ro.build.user
ro.build.flavor
ro.build.tags
ro.build.description
ro.build.fingerprint
ro.product.model
ro.product.brand
ro.product.name

(8) 尝试执行su命令

直接执行su命令看是否成功

(9) Native层Root检查

通过Native代码进行更底层的Root检测

(10) 检测Magisk二进制文件

检查Magisk相关路径是否存在

二、Root绕过方案

方案一:修改su名称

1. 环境要求

  • 安卓8源码环境

2. 修改步骤

  1. 修改/system/extras/su/Android.mk中的su为自定义名称
  2. 修改/system/core/libcutils/fs_config.cpp中的/system/xbin/su路径
  3. 修改/system/sepolicy/private/file_contexts中的/system/xbin/su路径

3. 去除指纹

  1. 修改ro.build.tags=test-keysrelease-keys

    • 该值由buildinfo.sh生成
    • 修改/build/make/tools/buildinfo.shBUILD_VERSION_TAGS的值
    • 或直接修改/build/core/Makefile中的BUILD_KEYS
  2. 修改其他相关属性:

    • ro.build.typeuserdebug改为user
    • 修改/build/core/Makefile中的TARGET_BUILD_FLAVOR定义:
      原值:TARGET_BUILD_FLAVOR := $(TARGET_PRODUCT)-$(TARGET_BUILD_VARIANT)
      改为:TARGET_BUILD_FLAVOR := $(TARGET_PRODUCT)-user
      

方案二:直接赋予adb root权限

1. 环境要求

  • 安卓8源码环境

2. 修改方法一:修改system property

  1. 修改build/core/main.mk

    原值:ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=1
    改为:ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=0
    
  2. 修改system/core/adb/Android.mk

    原条件:ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
    改为:ifneq (,$(filter userdebug user eng,$(TARGET_BUILD_VARIANT)))
    
  3. 修改system/sepolicy/Android.mk

    • 注释掉两处exit 1;

3. 修改方法二:修改should_drop_privileges()函数

修改system/core/adb/daemon/main.cpp

int should_drop_privileges() {
    return 0; // 直接返回0开启root权限
}

4. 去除编译指纹

按照方案一中的指纹去除方法进行操作

三、总结

本文详细介绍了安卓系统中常见的Root检测手段及相应的绕过技术,主要包括:

  1. Root检测的11类常见方法,涵盖文件检查、属性检查、命令执行等多种技术
  2. 两种有效的Root绕过方案:
    • 修改su名称及相关系统配置
    • 修改adb权限控制逻辑
  3. 系统指纹信息的修改方法,避免被检测出测试版本特征

这些技术需要对安卓系统有较深入的理解,建议在实际操作前充分测试,确保系统稳定性。

安卓Root检测与绕过技术详解 一、Root检测常见手段 1. 目录特征遍历 检测系统会检查以下常见su路径: 2. 尝试执行Root操作 尝试在受限目录(/data、/system、/etc)创建文件 尝试执行su、find、mount等命令 3. 读取系统属性 检查/system/build.prop中的编译类型(test-keys或release-keys) 获取ro.debuggable、ro.secure的值检测调试状态 4. Root检测指纹分类 (1) 检测Root管理应用 检查以下常见Root管理应用包名: (2) 检测潜在危险应用 (3) 检测Root隐藏应用 (4) 检查危险系统属性 (5) 检查可读写路径 (6) 检查编译类型 检测是否为"test-keys" (7) 检查Build.prop属性 (8) 尝试执行su命令 直接执行su命令看是否成功 (9) Native层Root检查 通过Native代码进行更底层的Root检测 (10) 检测Magisk二进制文件 检查Magisk相关路径是否存在 二、Root绕过方案 方案一:修改su名称 1. 环境要求 安卓8源码环境 2. 修改步骤 修改 /system/extras/su/Android.mk 中的su为自定义名称 修改 /system/core/libcutils/fs_config.cpp 中的 /system/xbin/su 路径 修改 /system/sepolicy/private/file_contexts 中的 /system/xbin/su 路径 3. 去除指纹 修改 ro.build.tags=test-keys 为 release-keys : 该值由 buildinfo.sh 生成 修改 /build/make/tools/buildinfo.sh 中 BUILD_VERSION_TAGS 的值 或直接修改 /build/core/Makefile 中的 BUILD_KEYS 修改其他相关属性: 将 ro.build.type 从 userdebug 改为 user 修改 /build/core/Makefile 中的 TARGET_BUILD_FLAVOR 定义: 方案二:直接赋予adb root权限 1. 环境要求 安卓8源码环境 2. 修改方法一:修改system property 修改 build/core/main.mk : 修改 system/core/adb/Android.mk : 修改 system/sepolicy/Android.mk : 注释掉两处 exit 1; 3. 修改方法二:修改should_ drop_ privileges()函数 修改 system/core/adb/daemon/main.cpp : 4. 去除编译指纹 按照方案一中的指纹去除方法进行操作 三、总结 本文详细介绍了安卓系统中常见的Root检测手段及相应的绕过技术,主要包括: Root检测的11类常见方法,涵盖文件检查、属性检查、命令执行等多种技术 两种有效的Root绕过方案: 修改su名称及相关系统配置 修改adb权限控制逻辑 系统指纹信息的修改方法,避免被检测出测试版本特征 这些技术需要对安卓系统有较深入的理解,建议在实际操作前充分测试,确保系统稳定性。