实战教学-某APP 反Root环境检测
本帖最后由 正己 于 2024-8-10 11:43 编辑## 前言
声明:本文仅供学习交流使用,所涉及的APP破解版不提供下载渠道。所涉及的技术请勿用于非法活动,否则所带来的一切后果自负。
## 使用工具
● NP管理器
## 开始实战
1. 打开APP就有环境检测
2. 管理器打开受害者
3. 查看apk信息
4. 选择resources文件
5. Arsc编辑
6. 常量搜索
7. 搜索“环境”
8. 搜索结果,后面发现是flutter和原生Android混合开发
9. 复制toast_app_fail
10. 返回resource搜索代码toast_app_fail
11.搜索到0x7f0f00d7
12. 返回dex
13. dex++编辑
14. 全选dex
15. 搜索十六进制0x7f0f00d7
16. 搜到结果0x7f0f00d7的使用
17. 进入MainActivity并定位到g方法
18. 反编译为Java代码分析逻辑
public final boolean v() {
//该方法检测签名信息
PackageManager packageManager = getPackageManager();
m.d(packageManager, "this.packageManager");
Signature[] signatureArr = packageManager.getPackageInfo(getPackageName(), 64).signatures;
m.d(signatureArr, "packageInfo.signatures");
return signatureArr.hashCode() == 574540939;
}
19. 搜索类DeviceUtils
20. 搜索到DeviceUtils
21. 反编译DeviceUtils类代码,b方法检测文件中是否存在Root, antiToot是个native方法,调用so库
22. 依次搜索方法查看调用处是否只有一处
23. 确认DeviceUtils的两个方法只有MainActivity一处调用
24. 回到MainActivity分析,所有return false都调用v1寄存器,所以将v1寄存器的值修改为true,即cosnt v1, 0x1
25. 保存代码
26. 反编译回Java可以验证修改结果
27. 退出修改并保存代码
28. 保存并编译文件
29. 打开功能
30. 使用APK签名
31. 签名并重新安装APK
32. 修改完成可以打开
羽刃 发表于 2024-8-12 16:17
native的antiRoot方法能替换成Java的吗?直接写smail返回true?
可以修改为java方法去掉native 所以它这个检测原理应该是,,,用native方法尝试调用su命令,拿到就算环境异常?感觉现在主流的面具或者kernelsu都可以很轻易屏蔽掉这类操作的说,不过还是感谢分享{:1_932:} 分析很详细 好详细,先收藏,过两天跟着学学 学到了,回去试试 用root开关工具是不是也行 ltgb 发表于 2024-8-10 08:10
用root开关工具是不是也行
有隐藏root这app直接无视过了,这是教学实战,在root环境下修改还能使用 看起来很牛:victory: 感谢大佬分享 这种检测要是放在lib.so文件里,就难办了 感谢大佬分享