移动端APP抓包实战:Frida+SSL Pinning绕过的完整配置

前言

日常移动端渗透测试、接口数据分析、APP 逆向调试中,SSL 证书锁定(SSL Pinning) 是绝大多数 APP 最常用的防抓包手段。普通 Charles、Fiddler 安装系统证书后依旧无法抓取 HTTPS 数据包,提示证书不信任、连接失败、请求直接拦截。

本文从零搭建环境,完整讲解虚拟机 / 真机 Root+Frida 部署 + SSL Pinning 一键绕过 + 代理抓包全流程,适配 Android 7~Android 14 主流机型,零基础也可直接照着配置实操。

一、前期必备环境准备

1. 硬件与设备要求

  1. 安卓设备:Root 真机 / 雷电模拟器、夜神模拟器、Genymotion(推荐模拟器,免拆机一键 Root)
  2. 电脑端:Windows/Mac/Linux 均可,配置 Python 环境
  3. 抓包工具:Charles 或 Fiddler(二选一即可)
  4. 网络环境:手机 / 模拟器与电脑处于同一局域网

2. 电脑端基础环境安装

(1)安装 Python3

官网下载 Python3.8 及以上版本,安装时勾选Add Python to PATH,安装完成终端验证:

bash

运行

复制代码
python --version
pip --version
(2)安装 ADB 调试工具
  1. 下载安卓 ADB 工具包,解压配置系统环境变量
  2. 终端输入adb devices,能识别设备即为配置成功
(3)设备开启调试模式
  1. 安卓设备连续点击版本号开启开发者选项
  2. 开启USB 调试、网络 ADB 调试
  3. 模拟器直接自带调试权限,无需额外开启

二、Frida 全套环境部署(核心步骤)

1. 电脑端安装 Frida 核心库

bash

运行

复制代码
# 安装frida主程序
pip install frida
# 安装frida-tools命令行工具
pip install frida-tools

验证安装:

bash

运行

复制代码
frida --version

2. 匹配设备架构下载 Frida 服务端

  1. 先查看设备 CPU 架构

bash

运行

复制代码
adb shell getprop ro.product.cpu.abi

常见结果:arm64-v8a(主流机型)、x86_64(模拟器)2. 前往 Frida 官方仓库,下载对应架构frida-server3. 解压后推送至安卓设备

bash

运行

复制代码
# 推送服务端到手机/data/local/tmp目录
adb push frida-server-xxx /data/local/tmp/
# 进入手机shell
adb shell
# 切换root权限
su
# 赋予执行权限
chmod 755 /data/local/tmp/frida-server
# 后台运行frida服务端
/data/local/tmp/frida-server &

3. 验证 Frida 连接成功

电脑终端执行:

bash

运行

复制代码
frida-ps -U

正常输出设备进程列表,代表 Frida 服务端与客户端连通成功。

三、抓包工具基础代理配置

以 Charles 为例,Fiddler 操作逻辑一致

  1. 电脑打开 Charles,开启 HTTP/HTTPS 抓包监听
  2. 设置代理端口,默认 8888
  3. 手机 / WiFi 手动设置代理:填写电脑 IP+8888 端口
  4. 手机浏览器访问:chls.pro/ssl 下载安装 Charles 根证书重点 :高版本安卓需将证书安装至系统证书目录,仅用户证书依旧会被 SSL Pinning 拦截。

四、SSL Pinning 原理与绕过思路

1. 什么是 SSL Pinning

APP 内置固定合法域名证书,发起 HTTPS 请求时,强制校验服务端证书与内置证书一致,无视手机系统安装的中间人证书,直接断开连接,彻底阻断普通抓包。

2. Frida 绕过核心原理

通过 Frida 注入 JS 脚本,HOOK 安卓网络请求核心类:

  • OkHttp3 网络框架证书校验方法
  • WebView 网页证书校验函数
  • Apache、原生 HttpURLConnection 校验逻辑直接禁用 APP 内所有证书校验逻辑,无视证书合法性,实现全局 HTTPS 抓包。

五、实战:Frida 一键绕过 SSL Pinning

1. 通用万能绕过脚本(适配 99% 安卓 APP)

新建文件命名 ssl_bypass.js,写入以下完整脚本:

javascript

运行

复制代码
/* Frida全局SSL Pinning绕过脚本 */
Java.perform(function () {
    // 绕过OkHttp证书锁定
    try {
        const CertificatePinner = Java.use("okhttp3.CertificatePinner");
        CertificatePinner.check.implementation = function(){};
    }catch(e){}

    // 绕过原生URLConnection证书校验
    try {
        const HttpsURLConnection = Java.use("javax.net.ssl.HttpsURLConnection");
        HttpsURLConnection.setDefaultSSLSocketFactory.implementation = function(){};
    }catch(e){}

    // 绕过WebView网页SSL校验
    try {
        const WebViewClient = Java.use("android.webkit.WebViewClient");
        WebViewClient.onReceivedSslError.implementation = function(webview, errorHandler, sslError){
            errorHandler.proceed();
        };
    }catch(e){}

    // 全局信任所有证书
    try {
        const X509TrustManager = Java.use("javax.net.ssl.X509TrustManager");
        X509TrustManager.checkClientTrusted.implementation = function(){};
        X509TrustManager.checkServerTrusted.implementation = function(){};
    }catch(e){}
});
console.log("===== SSL Pinning 绕过成功 =====");

2. 注入脚本启动抓包

  1. 先在设备打开需要抓包的目标 APP
  2. 电脑终端执行注入命令

bash

运行

复制代码
# 方式1:按APP包名注入
frida -U -f 目标APP包名 -l ssl_bypass.js --no-pause

# 方式2:附加已运行APP进程
frida -U 目标APP进程名 -l ssl_bypass.js

3. 快速获取 APP 包名

bash

运行

复制代码
# 列出手机所有应用包名
adb shell pm list packages
# 查找指定APP包名
adb shell pm list packages | grep 关键词

六、常见问题排查与解决方案

问题 1:Frida 启动报错端口占用

解决:结束设备内重复运行的 frida-server,重新后台启动。

问题 2:注入脚本成功依旧无法抓包

  1. 确认手机代理配置正确,电脑与设备同网段
  2. 确认证书已安装为系统证书,非用户证书
  3. 部分加固 APP 需先脱壳,再进行 Frida 注入

问题 3:安卓 13/14 高版本绕过失效

解决:使用新版 Frida 服务端,搭配高适配绕过脚本,关闭 APP 安全检测、隐私权限拦截。

问题 4:APP 检测到 Frida 环境闪退

优化方案:

  1. 使用Frida 隐藏模块隐藏 frida 特征
  2. 屏蔽设备 Root 特征检测
  3. 采用静默注入模式,避免进程特征暴露

七、进阶拓展用法

  1. 批量绕过:脚本常驻注入,无需每次重启 APP
  2. 动态修改请求参数:Frida HOOK 请求实体,篡改 POST/GET 数据
  3. 免 Root 绕过:搭配 Magisk+LSPosed 模块实现无 Root SSL 抓包
  4. 小程序 / 内嵌 H5 抓包:脚本内置 WebView 绕过,通杀内嵌网页请求

八、合规声明

本文所有技术内容仅用于企业内部安全测试、个人学习研究、合法 APP 接口调试,严禁用于非法爬取数据、恶意篡改业务请求、侵犯用户隐私、商业违规爬取等违法行为,一切违规操作后果由操作者自行承担,请严格遵守《网络安全法》相关法律法规。

文末总结

SSL Pinning 作为移动端主流防抓包防护,依靠传统证书安装已经完全失效,Frida 注入 HOOK 证书校验是目前最稳定、最高效的绕过方案。

整套流程总结:搭建 ADB+Python 环境→设备部署 Frida 服务端→配置局域网代理 + 根证书→注入 SSL 绕过脚本→一键抓取全量 HTTP/HTTPS 接口数据。熟练掌握这套配置,可轻松应对市面上绝大多数安卓 APP 抓包逆向需求。

相关推荐
枫叶V8 小时前
Scrapling 入门:一个现代 Python 网页采集框架
后端·爬虫
YYueHua59 小时前
python3爬虫基础--HTTP基本原理
爬虫
靠谱品牌推荐官9 小时前
【架构实战】如何设计一套原生支持 GEO 大模型爬虫语义索引的 HTML5/CSS3 纯净白盒前端架构?
前端·爬虫·架构
烟雨江南aabb9 小时前
Python第七弹:爬虫篇:BeautifulSoup库
爬虫·python·beautifulsoup
深蓝电商API1 天前
请求签名算法破解:从Chrome DevTools到Python还原的完整流程
爬虫·反爬
DevnullCoffe2 天前
用 MCP 让 AI Agent 直接批量下载亚马逊商品图片——原理、踩坑与实现
爬虫·python·api
深蓝电商API2 天前
电商网站IP封禁绕过:代理池+流量指纹模拟的实战方案
爬虫
川冰ICE3 天前
Python爬虫实战⑳|Pandas时间序列,趋势分析一网打尽
爬虫·python·pandas
小白学大数据3 天前
Python 爬虫动态 JS 渲染与无头浏览器实战选型指南
开发语言·javascript·爬虫·python