Mac下Android APP抓包配置
换了M系列芯片的Mac,过去常用的模拟器都不太支持,之前用谷歌的Android-emulator-m1-preview,后来支持Android Studio了,就用Android Studio配置测试环境。
一、难点:
- APP存在root检测;
- APP不走WiFi设置的代理;
- HTTPS抓包无法解密;
- 传统抓包无效
二、思路:
- 模拟器(Android Studio 的 AVD)
- 代理转发工具(Clash)
- 抓包软件(burpsuite,Charles,Fiddler都行),导入系统证书解密https
所需工具即:一个合适的模拟器+支持https的抓包软件+流量转发工具
本文即AVD+Clash+Burp
三、行动
3.1 创建Android Virtual Device(AVD)
国内的各种模拟器不太支持m1芯片,于是就上手Android Studio中的 AVD。 配置自己选合适的,我是 Pixel 5 + Tiramisu(API 33),需要多试几个版本
可能遇到的问题:
- Android版本太低,APP不支持;
- Android版本有root,APP存在检测,不允许在root环境下运行;
- Android架构冲突,APP无法安装;
- 其他
创建过程如下:
- Open一个空文件夹作为新项目,或者直接选择
Profile or Debug APK
加载一个APK都可以。
- 进入项目后,点击右侧
Device Manager
–Create device
创建AVD模拟器,挑选Android系统镜像时根据需要选择合适的系统。
设置完之后就会在Device Manager
列表中出现一个新的模拟器。
建议先启动一下模拟器,检查纯净状态下网络是否正常、待测试APK能否顺利安装并正常运行。
一切顺利的话,接下去安装Clash和Burp系统证书。
3.2 创建burp证书
高版本Android系统,导入证书安装后一般都是用户证书,我们需要花点功夫将其变成系统证书。
打开burp,电脑浏览器访问"http://burp
“并下载证书cacert.cer,获得证书文件cacert.cer之后,准备将其转换成可放入系统证书库的文件。
下列方法一和二本质是一样的,都行。
方法一:
|
|
获得红框中的hash值并把它作为后续的放入到系统证书库的证书名字,一般burp的证书名为(9a5ba575.0)
|
|
方法二:
先将burp的证书转换为pem格式,再计算其hash值,然后重命名为可以导入Android系统的xxx.0
文件。
|
|
3.3、导入系统证书
3.3.1 坑点1:
获得了修改好的证书文件(9a5ba575.0)之后,就需要将证书放入AVD的目录当中,直接adb push会报command not found
,Read-only
,直接adb root 、adb remount也会报错。
报错记录:
|
|
3.3.2 配置SDK环境变量
启动AVD之前,需要配置一下Android相关的环境变量。
打开 .bash_profile 写入环境变量:vim ~/.bash_profile
。
|
|
保存并退出,source ~/.bash_profile
并使其生效。
注意:如果没有重启终端,新打开的终端默认加载旧的配置,需要手动source ~/.bash_profile
使其生效。
3.3.3 emulator启动AVD
现在我们必须将 CA 证书放在位于Android 文件系统中的/system/etc/security/cacerts/
系统证书存储库中。默认情况下,/system
分区以只读方式挂载。因此需要获得/system
分区的写入权限并复制上一步中创建的证书。
通过命令行配置启动参数的方式运行AVD(参考:解决Android Studio ADV模拟器无法使用remount命令记录),就可以以写的方式启动AVD并向系统目录写入证书文件。
进入到AVD目录并以 “-writable-system
” 的方式启动AVD
注意:如果你想使用你的证书,你必须使用 -writable-system
选项启动模拟器。否则 Android 将加载“干净”的系统镜像。
|
|
然后就可以看到AVD运行了起来,
如果能选用的Android镜像API Level >28(Android 9.0以上),则可能需要禁用安全启动验证,API Level<=28(Android 9.0及以下)可以跳过这步。
|
|
此时再在控制台执行remount命令挂载文件系统,接着就可以push我们修改好的系统证书文件了。
|
|
检查证书权限:
|
|
检查是否成功加入系统证书:
安卓模拟器: 设置-安全-更多安全设置-加密与凭据-信任的凭据:
不同版本的Android系统路径也不一样,可以进设置后直接搜索“凭据” 或“cerdentials”。AVD启动后默认语言是英语,可以自行修改。
3.3.4 补充说明:
通过命令行启动AVD 根据API差异,可能存在不同。
API LEVEL > 28 的说明:
Tested on emulators running API LEVEL 29 and 30
|
|
API LEVEL <= 28 的说明:
Tested on emulators running API LEVEL 26, 27 and 28
|
|
3.4 抓包(clash+burp)
3.4.1.安装配置Clash
网上找了一个clash for Android:下载链接
ClashForAndroid:https://github.com/Kr328/ClashForAndroid
相关教程(没用到)
安装clash,可以直接用adb install
:
|
|
配置yaml规则文件,只要将配置文件中的server和port修改成burp监听的ip和port就可以了(至于其他配置,可以查阅相关文档进行自定义的配置)
|
|
修改完之后直接adb push到AVD当中。
|
|
然后打开clash,“配置–>+–>文件:从文件导入–>浏览文件–>更多:导入"从文件导入配置就可以了。 使用时在"配置"中勾选刚导入的配置文件
点击运行:
进入”代理“,点击右下角闪电标志,测试代理是否正常,测试连接出现数字表明连接正常。
3.4.2 burp代理设置
burp部分的代理不多说了
四、其他-待补充
burp那一块换成charles和fiddler抓包,也是可以的
参考文章:
- 整合一个Android抓包新姿势(AVD+https+remount+clash代{过}{滤}理转发+burp 版)——52破解-Fythem
- clash各平台使用教程:除了下载文件,其他没怎么用上
- adb 导入 burp 证书:Android系统证书的制作
- Android Studio 自带模拟器获取root权限:用了第一部分,实现导入系统证书
- Install System CA Certificate on Android Emulator
#解决问题 #APK #AVD #Android #clash #Burp