阳子
阳子
发布于 2026-07-30 / 0 阅读
0
0

安卓应用抓包

从 Android 7.0(API 24)开始,安卓的安全机制发生了重要改变:App 默认只信任系统自带的根证书,不再信任用户手动安装的证书。

如果你只是把 Charles、Burp Suite 或 mitmproxy 的证书像安装普通文件一样装进手机,大部分 App 在发起 HTTPS 请求时依然会报错(提示网络无连接或 SSL 校验失败),因为它们认为你的抓包证书是“不安全”的。

为了绕过这个限制,必须利用 Root 权限,把我们的抓包证书伪装成系统自带的证书,强行塞进系统的核心目录里。

配置证书

1、安装Openssl

官方下载或使用winget安装

Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions

winget install -e --id ShiningLight.OpenSSL

2、配置证书

安卓系统不认 mitm-server.crt 这种名字,它只通过证书特有的哈希值来识别。你用 OpenSSL 算出的 10fb1fcc 就是它的身份证号,必须重命名为 10fb1fcc.0

PS C:\Users\Administrator> & "C:\Program Files\Git\usr\bin\openssl.exe" x509 -inform PEM -subject_hash_old -in .\mitm-server.crt

Copy-Item .\mitm-server.crt "10fb1fcc.0"

3、连接ADB

连接模拟器

让 ADB 工具连接到你电脑本地运行的 MuMu 模拟器。7555 是 MuMu 模拟器专属的本地通信端口。

PS C:\Users\Administrator\platform-tools> .\adb.exe connect 127.0.0.1:7555
connected to 127.0.0.1:7555

获取最高系统权限

将 ADB 守护进程 (adbd) 以 Root(超级管理员)身份重启。因为你要修改的是安卓底层的 /system 目录,普通权限是无法写入的。

PS C:\Users\Administrator\platform-tools> .\adb.exe root

restarting adbd as root

重新连接模拟器

PS C:\Users\Administrator\platform-tools> .\adb.exe connect 127.0.0.1:7555

already connected to 127.0.0.1:7555

植入证书文件

将你电脑当前文件夹下的证书文件 10fb1fcc.0,直接“推”(上传)到安卓系统的系统级信任证书存放目录 /system/etc/security/cacerts/ 中。

PS C:\Users\Administrator\platform-tools> .\adb.exe push 10fb1fcc.0 /system/etc/security/cacerts

10fb1fcc.0: 1 file pushed, 0 skipped. 0.6 MB/s (1537 bytes in 0.002s)

修改文件权限

通过 shell 调用安卓内部的 Linux 命令 chmod,修改刚刚放进去的证书文件的权限。

PS C:\Users\Administrator\s\platform-tools> .\adb.exe shell "chmod 644 /system/etc/security/cacerts/10fb1fcc.0"

问题说明:在安卓严格的安全策略(SELinux)下,系统证书权限必须是 644(即 -rw-r--r--,只有 Root 才能修改,其他所有进程只能读取)。权限过高(如 664 或 777)会导致系统认为该文件存在安全风险,从而拒绝加载


评论