Android 手机的安全策略随着 Android 版本变更很大,在只兼容 Android 7 版本后的 App 中,默认只信任系统证书,只有 root 及系统盘可写,才能实现 Https 的解密。好在还有模拟器可用。
必要工具
- MuMu 模拟器
- ADB: 电脑上安装
- Charles
配置模拟器
- 启动模拟器,打开
- 启用 root 权限
- 启用 可写系统盘
修改 Charles 根证书 为 Android 所需格式
- 打开Charles, 导出 pem 格式的 root 证书为:charles.pem
- 电脑上执行:
openssl x509 -inform PEM -subject_hash_old -in charles.pem
- 把 charles.pem 重命名为 faf57fe3.0 (faf57fe3 为上一步中输出的第一行内容,替换为实际值)
- 执行:
openssl x509 -inform PEM -in faf57fe3.0 -noout -text
- 把上一歩输出的内容附加到 faf57fe3.0文件的最后,组合为完整的 CA 文件,保存为 UTF-8 编码, 换行符设置为 LF
配置证书到手机上
- 电脑连接手机
- 关闭验证:执行下面的命令
1
2
3adb root
adb disable-verity
adb reboot - 复制证书到 Android 系统证书库中
1
2
3
4
5
6adb root
adb push faf57fe3.0 /system/etc/security/cacerts/
adb shell
su
chmod 644 /system/etc/security/cacerts/faf57fe3.0
reboot - 验证证书是否安装成功:在手机中打开 系统设置 -> 安全 -> 更多安全设置 -> 加密与凭据 -> 信任的凭据, 在 “系统” 下找到刚才安装的证书
抓包
具体抓包的流程没有变化,可参考 charles 使用手册
注意
现在很多 APP 在网络请求时都有自建代理,或者不走系统代理,charles 中是无法拦截请求的,可以配合 Proxifier 使用