不能抓包的原因
Android7.0 之后默认不信任用户添加到系统的CA证书:
To provide a more consistent and more secure experience across the Android ecosystem, beginning with Android Nougat, compatible devices trust only the standardized system CAs maintained in AOSP.(文档链接)
也就是说对基于 SDK24 及以上的APP来说,即使你在手机上安装了抓包工具的证书也无法抓取 https 请求
解决方案:
一、官方解决方案(需修改APP代码,so 没什么鬼用......)
官方文档:https://developer.android.google.cn/training/articles/security-config.html
详细演示:https://blog.csdn.net/mrxiagc/article/details/75329629
二、将抓包软件的证书安装成系统证书(需ROOT)
1、root手机 (小米root教程)
2、安装adb(mac安装adb教程)
3、将charles证书保存到电脑上(重命名成getssl.crt)
4、 依次执行以下命令
openssl x509 -inform PEM -subject_hash_old -in getssl.crt | head -1 //得到类似字符串:f8ccc956
cat getssl.crt > f8ccc956.0
openssl x509 -inform PEM -text -in getssl.crt -out /dev/null >> f8ccc956.0
adb push /Users/lianwu/Documents/f8ccc956.0 /system/etc/security/cacerts/f8ccc956.0
//把生成好的文件放入手机的 /system/etc/security/cacerts 目录下
5、成功后可在系统证书中看到导入的证书:(小米手机路径:设置->密码、隐私与安全->系统安全->加密与凭据->信任的凭据->系统)
如果在系统证书没有找到导入的证书,请继续往下看:
trouble shooting
1、执行步骤4时,部分手机即使root后,/system分区也不能push文件(remote couldn't create file: Read-only file system),需要将system盘remount成可读写模式:
依次执行下面的命令:
adb shell
su //获取su权限
mount -o rw,remount /system //remount成可读写
mount -o ro,remount /system //在push完文件后恢复成只读
2、对于小米手机即使完成了以上操作也会出现在成功push了文件后,没有提示任何错误,但是用ls -a找不到push的文件。
这是由于小米手机即使在获取了root权限后,/system分区依然没有解锁,因此我们还需要解锁/system分区
方法: (查看教程第三步:解锁system)
建议在酷安app搜索syslock,下载后一键解锁,或者直接使用下面的adb命令:
adb root
adb disable-verity
解锁完成后,再将证书push到系统证书目录中。