GKLBB

当你经历了暴风雨,你也就成为了暴风雨

导航

应用安全 --- 安卓抓包

Charles 抓包详解

1. 抓包原理

Charles 作为 中间人代理 (Man-in-the-Middle Proxy) 工作:

  1. 电脑上运行 Charles,开启一个代理服务器(如 :8888)。

  2. 手机网络设置代理,指向电脑的 IP 和 Charles 的端口。

  3. 手机的所有网络请求都会先流经 Charles,再由 Charles 转发给目标服务器。

  4. 服务器的响应也同样先返回给 Charles,再返回给手机。
    因此,Charles 得以记录下所有流经它的网络数据。

2. 基础配置(抓取 HTTP)
  1. 安装与激活:从官网下载 Charles 并按教程激活。

    点help,然后register,输入下面,如果过期搜索新的

    Name: Just For Testing
    Serial: 230ADA2020DFBD108E(我也是找的,如果过期了可以参加其他教程) 

  2. 电脑端配置:

    • 查看电脑本地 IP 地址(如 192.168.1.10)。

    • Proxy -> Proxy Settings... 中确认代理端口(默认 8888)。

  3. 手机端配置:

    • 确保手机和电脑在同一局域网(连接同一个 Wi-Fi)。

    • 在手机 Wi-Fi 设置中,修改当前网络的代理为手动,填入电脑的 IP 和 Charles 的端口。

  4. 开始抓包:配置完成后,Charles 会弹出连接确认框,选择 Allow。此时手机的非加密 HTTP 流量即可被捕获。

3. 高级配置(抓取 HTTPS)-> 重点与难点

HTTPS 协议的设计目的是防止中间人窃听和篡改。Charles 要解密 HTTPS,必须让手机信任它自己签发的证书。

  1. 安装 Charles CA 证书到手机:

    • 电脑 Charles 开启状态,手机浏览器访问 chls.pro/ssl,下载并安装证书。

    • 此步骤完成后,在 Android 7.0 (Nougat) 及以下版本的设备上,已可抓取 HTTPS。

  2. Android 7.0+ 的系统证书问题 (核心概念):

    • 用户证书 vs. 系统证书:从 Android 7.0 开始,APP 默认只信任系统预装的系统证书,而不再信任用户自行安装的用户证书。

    • 后果:即使安装了 Charles 证书,很多 APP(尤其是其 targetSdkVersion >= 24 的)依然会报 SSL 错误,无法抓包。

    • 解决方案:必须将 Charles 的 CA 证书从 “用户证书” 区域移动到 “系统证书” 区域。

  3. 将证书提升为系统证书 (需 Root):

    • 必要条件:手机必须已 Magisk Root。

    • 使用 Magisk 模块:安装如 Move Certificates 或 MagiskTrustUserCerts 等模块。这些模块的作用就是在每次开机时,自动将用户证书目录下的所有证书复制到系统证书目录。

    • 操作流程:在 Magisk App 中刷入模块 -> 重启手机 -> 查看 设置 -> 安全 -> 加密与凭据 -> 信任的凭据 -> 系统,此时应能看到 Charles Proxy 的证书。

至此,手机端配置完成,可以抓取绝大多数 APP 的 HTTPS 流量。

posted on 2025-08-24 14:20  GKLBB  阅读(9)  评论(0)    收藏  举报