Android环境检测与绕过对抗
提示
此处的环境以Lsposed(Zygisk版)+Magisk(Zygisk模式)为例。
常见的环境检测方案
- 检测Root权限,例如直接请求root权限,或者查找su文件;
- 检测是否存在Magisk、Xposed管理器以及Xposed模块;
- 进行进程Trace,检测是否存在Xposed进程、Frida进程;
- 进行代理检测,检测是否通过代理连接网络;
- 进行VPN检测,检测是否通过VPN连接网络;
- 采用单向认证、双向认证方案;
- 检测SELinux状态,检测是否为开启状态;
- 加各种乱七八糟的壳;
- 检测Bootloader锁定情况,默认为锁定;
- 检测是否开启调试模式;
对抗检测
Root对抗
Magisk需要安装最新版本:直达链接
1. 按照下图配置开启Zygisk

2. 安装Shamiko模块
下载下来的是magisk模块,通过内置选择器安装。

3. 安装Shamiko白名单管理工具
4. 开启Shamiko白名单
警告
shamiko开启白名单后会屏蔽所有root请求,只有关闭白名单才能收到root请求

至此完成Root检测屏蔽
应用检测对抗
1. 安装HideMyAppList
2. 安装HideMyAppList的Magisk插件
需要关闭shamiko的白名单模式,安装完成后重新启动

3. 创建应用隐藏模板

4.对目标App进行隐藏
隐藏完成后需要重新启动app

进程Trace对抗、VPN检测对抗
使用对话框取消这个模块来搞定,直达链接

frida检测问题可以采用去特征的Frida:链接直达
代理检测对抗
该方案适用于检测代理或者App干脆不走代理的情况。
标题
安卓7以上版本,系统不再信任用户安装的证书,可以手动操作移动到系统目录。
安卓11以上版本不支持直接将证书移动到系统目录,可以使用Magisk模块MagiskTrustUserCerts 解决,安装完证书后需要重新启动。
# 手动移动用户证书到系统路径下adb shell #连接手机进入shell模式su root #如果你不root权限可以试着这个一般都是rootcd /data/misc/user/0/cacerts-added #移动至于用户证书目录mount -o remount,rw /system #将系统证书目录权限改成可读可写就可以移动文件不然不行cp * /etc/security/cacerts/ #这里可以使用cp也可以使用mvmount -o remount,ro /system #移动完之后记得把权限改回只读- 方案一:使用安卓端VPN抓包工具HttpCanary,直达链接,建议下载3.3.6版本

- 方案二:使用drony,开启虚拟VPN,让VPN走代理即可,直达链接

单向认证、双向认证对抗
单向认证
使用JustTrustMe++模块,直达链接,使用方式比较傻瓜,推荐使用。
或者使用Frida脚本ssl-pining-bypass:直达链接。
双向认证
先用单向认证的办法搞定一半
解包,找证书(一般为P12后缀)
tree -NCfhl |grep -i p12# 在linux和Mac上可以直接使用tree命令查找抓密码,这是最麻烦的一点
- 采用frida脚本hook快速定位:直达链接
- 自己手动去跟踪~
将证书和密码导入代理工具,例如burp~
SELinux检测对抗
一般的rom是默认开启selinux的,有的定制的rom可能会关闭selinux。
检测selinux,目前就遇到一个天翼支付会检测这个东西。
adb shell setenforce 1 # 临时开启selinux 加壳对抗
永远不要把你解决加壳问题的办法告诉客户,不然你会陷入无休止的 加壳->脱壳->加壳 中来~
常见问题定位技巧
以下只是方便快速定位app可能做了哪些防护措施
打开app直接闪退
- 检测root、检测Magisk环境等...
- 检测进程、检测xposed、检测frida等....
- 检测虚拟机...
- app所使用的api不支持(比如安卓10使用安卓12的api)
- app中使用C++/C编写的拓展没有编译对应平台(比如你在模拟器运行apk闪退,真机运行正常,这个情况就是apk没有编译x86的so文件导致的)
弹出环境异常并存在退出按钮
一个不一定可以用,但是测试过的方法可以绕过:
使用**进程Trace对抗、VPN检测对抗**中的对话框取消功能,开启作用之后,点弹窗的其他位置,理想情况下是直接关闭弹窗并进入app,不理想的情况下就是直接退出app。
- 检测root、检测Magisk环境等...
- 检测进程、检测xposed、检测frida等....
- 检测虚拟机...
弹出网络异常
- 检测代理或者VPN了
- 证书存在问题
- 网络真的挂了
定位网络问题我比较推荐使用HttpCanary,他会告诉你是什么原因导致的抓包失败,并告诉你解决方案。