PCAPdroid 中文文档 下载 App

系统证书信任修复 — Android 7+ 用户安装证书不被应用信任

问题根源

Android 7(API 24)以后系统加强了证书安全:

Google Play 上绝大多数现代应用都把 targetSdk 设在 28+,不会信任用户 CA。所以即使你在 PCAPdroid 向导里顺利装好了 CA 证书,绝大多数应用解密还是会红锁失败。

方案一:root + movecert 模块(推荐)

有 Magisk root 的设备:

  1. 安装 Magisk 模块 movecert
  2. 把 PCAPdroid CA 证书先作为用户证书安装(向导里会引导)
  3. 重启设备,movecert 自动把用户证书搬到系统证书目录 /system/etc/security/cacerts/
  4. 此时应用看到的 PCAPdroid CA 就和系统预装证书地位一样,全部信任

这是最干净、最不破坏应用的方案,root 用户首选。

方案二:root + LSPosed + sslunpinning

如果应用还做了证书锁定(certificate pinning)——即应用自己内嵌了服务器证书指纹,每次 TLS 握手时主动比对,哪怕系统信任 PCAPdroid CA 也会失败。此时需要用 LSPosed(Xposed)框架配合 sslunpinning 模块:

  1. 安装 LSPosed 框架(需要 Magisk + Zygisk)
  2. 安装 sslunpinning 模块并在 LSPosed 里对目标应用启用
  3. sslunpinning 会 Hook Android 的证书验证链路,跳过 pinning 检查

适用于有 root 且想解通做了证书锁定的主流 App(微信、支付宝等)。

方案三:root + 手动刷系统证书

任意 root 设备都可以手动把证书刷进系统分区:

  1. 把系统分区挂载为 rw
  2. 把 PCAPdroid CA 证书拷贝到 /system/etc/security/cacerts/
  3. 设置正确的文件权限
  4. 重启

比 movecert 麻烦,但不需要装额外 Magisk 模块。

方案四:Android 模拟器 + root

不想在真机上折腾?用 Android Studio 创建一个 x86_64 或 AArch64 的模拟器:

  1. 模拟器开启 Google API / Google Play 镜像
  2. 启动后通过 adb root + adb remount 获取 root
  3. 重复方案一或方案三的步骤
  4. 在模拟器里装 PCAPdroid + 目标应用,即可解密

PCAPdroid 2.0.0 以后 mitm 插件不再支持旧 x86 模拟器,需要 x86_64 或 AArch64。

方案五:VirtualXposed 虚拟环境

VirtualXposed(以及类似的虚拟框架)可以让 App 运行在 SDK 23(Android 6.0)的兼容模式下,此时用户证书自动被信任。步骤:

  1. 安装 VirtualXposed
  2. 在 VirtualXposed 里安装目标应用(不是 PCAPdroid)
  3. 在 PCAPdroid 的 Decryption rules 里把 VirtualXposed 添加为解密目标
  4. 在 VirtualXposed 里启动目标应用,PCAPdroid 即可解密

注意:VirtualXposed 在 Android 11+ 上已停止维护,很多新系统不兼容;某些 App 在虚拟环境里会检测到环境异常而拒绝运行。

方案六:apk-mitm / apktool 重签名

反编译 APK、把 targetSdk 降到 23、重编译并重新签名:

  1. 用 apk-mitm 工具一键完成(反编译 → 降低 targetSdk → 重建)
  2. 或者手动用 apktool 反编译、改 AndroidManifest.xml 的 targetSdkVersion → 23
  3. 重新编译签名后卸载原 APK、安装新 APK

缺点是原应用如果用 SSO 登录,新签名会导致 SSO 失效——需要先在原 APK 里登录,备份应用数据目录(/data/data/包名),装新版 APK 后恢复数据。

方案七:App 源码 + Android Studio(开发者)

如果你有目标应用的源代码(自己开发的或开源项目),最干净:

  1. 在 AndroidManifest.xml 里添加 network_security_config
  2. 在 res/xml/network_security_config.xml 里指定信任 PCAPdroid CA 证书
  3. 重新编译安装

方案选择速查

场景推荐方案
有 Magisk root,不想改应用movecert 模块
有 root,App 还做了 pinningLSPosed + sslunpinning
不想在真机上折腾Android 模拟器 + root
没 root,想解通 pinning Appapk-mitm 重签名
有 App 源码network_security_config

<img src="images/cert-trust-error.jpg" alt="TLS 解密证书不被信任错误" title="客户端不信任代理证书" />