安卓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. 修改步骤
- 修改
/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定义:原值:TARGET_BUILD_FLAVOR := $(TARGET_PRODUCT)-$(TARGET_BUILD_VARIANT) 改为:TARGET_BUILD_FLAVOR := $(TARGET_PRODUCT)-user
- 将
方案二:直接赋予adb root权限
1. 环境要求
- 安卓8源码环境
2. 修改方法一:修改system property
-
修改
build/core/main.mk:原值:ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=1 改为:ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=0 -
修改
system/core/adb/Android.mk:原条件:ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT))) 改为:ifneq (,$(filter userdebug user eng,$(TARGET_BUILD_VARIANT))) -
修改
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检测手段及相应的绕过技术,主要包括:
- Root检测的11类常见方法,涵盖文件检查、属性检查、命令执行等多种技术
- 两种有效的Root绕过方案:
- 修改su名称及相关系统配置
- 修改adb权限控制逻辑
- 系统指纹信息的修改方法,避免被检测出测试版本特征
这些技术需要对安卓系统有较深入的理解,建议在实际操作前充分测试,确保系统稳定性。