status
Published
type
Post
category
date
Feb 22, 2024
slug
rootCheckapassIdea
summary
roo检测原理以及绕过方案
tags
password
icon
对于Android逆向开发者来说,我们平时root过的手机,想要对目标接口apk进行调试的时候,打开apk发现,apk弹出手机已被root的提示的dialog弹窗,点击按钮时就强制退出app了。这是apk对我们手机进行了过滤检测,所以我们想要抓到包就需要绕过root检测,

root检测原理
Root检测的原理在于确定安卓设备是否获得了超越普通用户权限的root权限。
这通常涉及到一系列检查,目的是发现任何表明系统安全性和完整性已被破坏的迹象。
- 运行app--》app会用代码去固定位置检查,当前位置下有没有
su命令,如果有,说明手机root了
- root的手机,会有一些特征:典型的特征就是 su 命令
只要手机root了,会在如下目录出现特殊的标识
root方式有很多种:面具,superuser.apk
我们查看手机是否必备root,直接进入:
/system/bin 看看有没有su可执行文件
绕过方案
- -如果是java层,执行方法检测---》我们可以通过hook函数,返回False可以绕过(让它不执行---》绕过强制跟新一样)
- -如果是c层,我们需要使用
aosp刷机,修改su关键词,绕过(通过修改 su 可执行文件的名字aosp刷机并root,修改su文件名 su1)
绕过方案一
使用步骤:
- 复制
- 手机端启动frida-server,端口转发
- 运行这个js脚本:
绕过方案二
面具+Shamiko模块方案+隐藏magisk应用
原理隐藏su文件,让某款app检测不到
使用步骤:
- 把老师提供的 Shamiko-v0.5.2-120-release.zip 推送到手机上
- 打开面具---模块--》本地安装---》把zip刷入--》重启--》再进来--》打开



重新打开面具 → 设置
发现模块已经安装成功

- 打开面具--》首页--》右上角齿轮点击---》配置排除列表--》把对应app排除


- 打开app,就没有提示了

补充: 绕过面具Magiisk的检测
有银行类的app,不仅仅做root检测,还做面具检测--》看看你手机上有没有装面具--》装了面具也不允许进入app

绕过方案三
自己使用反编译+hook绕过--》定位代码--》自己hook即可
用jadx反编译apk → 搜索检测时弹出来的dialog的关键词

核心原理
1 检测是否是模拟器
MiscUtil.isSimulator(this)
2 检测是否root
MiscUtil.isRooted()
解决方案: hook,他俩,返回false,就可绕过
MiscUtil.isSimulator(this) 是否是模拟设备
查看这个文件:/system/build.prop

MiscUtil.isRooted() 是否root
通过hook绕过
执行isRootPhoneHook.js脚本
绕过方案四(Aosp)
aosp刷机方案
后期会使用aosp,编译,并刷入到手机---》做root时,把su文件名改掉--》后期app就检测不到了
aospAndroid是开源的,AOSP(Android Open Source Project)为Android开源项目的缩写,自己编译Android系统这个代码是开源的---》各个厂商可以拿到这个代码---》修改---》编译---》适配得到手机上---》就成了自己的操作系统 鸿蒙:可以装安卓apk---》不支持安卓apk--》大改了 小米miui都是
Loading...



.png?table=block&id=8cbd9ef4-8c1c-4581-80f1-a15297380674&t=8cbd9ef4-8c1c-4581-80f1-a15297380674&width=1080&cache=v2)

