app逆向抓包技巧:ROOT检测绕过

本篇博客旨在记录学习过程,不可用于商用等其它途径

场景

某监管app查壳发现使用了 《梆梆企业版》 加固,想尝试使用frida-dexdump脱壳,打开app发现提示下图样式,由于进不去界面,我们直接脱壳无法保证能获取到完整的 Dex 文件,这时需要处理掉它的检测机制。
在这里插入图片描述

检测原理

ROOT检测的方式多种多样,主要是分为Java层和Native层两层进行ROOT检测,ROOT检测方式总结一下主要分为几类:

  1. 已安装App检测,如是否有magisk
  2. 文件检测,如/sbin/su
  3. prop检测,如ro.debuggable
  4. system分区是否可写

检测使用的API也是多种多样,比如Java层的File.existsFile.canRead都能用来检测文件是否存在,Native层的fopenaccess也一样。

一些路径下的su文件,一些root的app相关文件
“/data/local/bin/su”,
“/data/local/su”,
“/data/local/xbin/su”,
“/dev/com.koushikdutta.superuser.daemon/”,
“/sbin/su”,

检测一些root的app如magisk等
“com.noshufou.android.su”,
“com.noshufou.android.su.elite”,
“eu.chainfire.supersu”,
“com.koushikdutta.superuser”,
“com.yellowes.su”,
“com.topjohnwu.magisk”,

绕过方式

在非ROOT环境使用BlackDex脱壳

BlackDex能够在非root环境下进行脱壳,下载地址
安装后进入BlackDex,直接双击需要脱壳的app,然后将脱壳得到的DEX文件放到apk里再用jadx反编译即可
在这里插入图片描述

使用高版本Magisk(v24+)绕过

在这里插入图片描述
在这里插入图片描述

自测发现确实可以绕过ROOT检测,但是这样排除列表中的应用则无法使用MagiskLsposed模块,如果app还有SSL检测就没法绕过
在这里插入图片描述

使用Shamiko插件绕过

Shamiko下载路径
最新版本会依赖于Magisk对应版本,如果对不上会安装失败,提示语大概是please install magisk canary

安装成功后,操作流程看下图:
在这里插入图片描述
在这里插入图片描述

相比较Magisk原生hide,就是在安装模块后把遵守排除列表关了,此时就可以同时支持Lsposed其它模块了

删除检测源码

这种操作不适合本场景,它适合那些没有加固、反编译能拿全源码的app,通过删除或者修改检测源码并重新编译的方式可以绕过检测。

Frida hook绕过

这种操作不适合本场景,它需要反编译看源码
在针对基于 su 的检测方式里,可以使用jadx反编译apk,全局搜索"su"定位到检测代码,然后直接hook代码修改方法返回值,如:
在这里插入图片描述

Frida Objection绕过

Objection 是基于 Frida 框架开发的一个工具,它提供了一组便捷的功能和脚本,以简化在移动应用程序中使用 Frida 进行动态分析和漏洞利用的过程。
安装:pip install objection

由于Objection依赖Frida,在运行Objection前需要先运行Frida
启动命令:objection -g 包名 explore
执行命令时会自动打开app,这时候是被检测ROOT的,点击退出让app在后台运行
在这里插入图片描述

然后在Objection命令行输入android root disable,再回到app界面,这时app会再次刷新,而Objection会hook处理它调用到的检测,从而实现绕过
在这里插入图片描述

objection绕过双进程保护

如果app存在双进程保护,那么我们启动objection就可能出现卡死、闪退等问题。
比如:
在这里插入图片描述

一般双进程保护,先把app关掉直接用spawn模式就能附加上,但是这里我尝试了很多都没法绕过,所以只能尝试修改objection源码来绕过双进程保护。
windows中找到objection的源码文件,然后进入utils\agent.py,找到inject 函数,进行以下代码修改

源代码:
在这里插入图片描述

修改后代码:
在这里插入图片描述

修改后重新执行命令就能附上了
在这里插入图片描述

posted @ 2024-08-02 00:25  七夜魔手  阅读(17)  评论(0编辑  收藏  举报  来源