Android 抓包

Android 手机的安全策略随着 Android 版本变更很大,在只兼容 Android 7 版本后的 App 中,默认只信任系统证书,只有 root 及系统盘可写,才能实现 Https 的解密。好在还有模拟器可用。

必要工具

配置模拟器

  1. 启动模拟器,打开
  2. 启用 root 权限
    mumu-root
  3. 启用 可写系统盘
    mumu-writable-system

修改 Charles 根证书 为 Android 所需格式

  1. 打开Charles, 导出 pem 格式的 root 证书为:charles.pem
  2. 电脑上执行: openssl x509 -inform PEM -subject_hash_old -in charles.pem
  3. 把 charles.pem 重命名为 faf57fe3.0 (faf57fe3 为上一步中输出的第一行内容,替换为实际值)
  4. 执行: openssl x509 -inform PEM -in faf57fe3.0 -noout -text
  5. 把上一歩输出的内容附加到 faf57fe3.0文件的最后,组合为完整的 CA 文件,保存为 UTF-8 编码, 换行符设置为 LF

配置证书到手机上

  1. 电脑连接手机
  2. 关闭验证:执行下面的命令
    1
    2
    3
    adb root
    adb disable-verity
    adb reboot
  3. 复制证书到 Android 系统证书库中
    1
    2
    3
    4
    5
    6
    adb root 
    adb push faf57fe3.0 /system/etc/security/cacerts/
    adb shell
    su
    chmod 644 /system/etc/security/cacerts/faf57fe3.0
    reboot
  4. 验证证书是否安装成功:在手机中打开 系统设置 -> 安全 -> 更多安全设置 -> 加密与凭据 -> 信任的凭据, 在 “系统” 下找到刚才安装的证书

抓包

具体抓包的流程没有变化,可参考 charles 使用手册

注意

现在很多 APP 在网络请求时都有自建代理,或者不走系统代理,charles 中是无法拦截请求的,可以配合 Proxifier 使用