雷电9 Android9 + Burp + Frida 抓包实操最终完整版
实测无报错、适配安卓9、防代理检测、SSL通杀绕过
适配环境:雷电模拟器9、Android 9 x86_64
解决问题:系统目录只读、ADB版本冲突、Frida端口占用、APP代理检测、SSL证书锁定
用途:捕获APP、网页HTTPS明文数据包
一、前期基础环境配置
1.1 模拟器设置
- 模拟器开启ROOT权限
- 关闭模拟器自带代理、VPN、网络加速功能
- 保持网络正常联网即可
1.2 统一ADB版本(杜绝反复重启报错)
- 进入雷电模拟器安装目录,复制三个文件:
adb.exe、AdbWinApi.dll、AdbWinUsbApi.dll
- 覆盖替换电脑环境变量内的ADB文件
1.3 Burp基础固定配置
- 打开Burp,进入Proxy监听设置
- 监听地址:All interfaces
- 监听端口:8080
二、Burp证书制作 + 系统证书安装
2.1 导出证书
Proxy设置内导出证书,格式选择DER,保存命名:cacert.der
2.2 OpenSSL格式转换命令
openssl x509 -inform der -in cacert.der -out burp.pem
openssl x509 -inform PEM -subject_hash_old -in burp.pem
执行后获取哈希值,将 burp.pem 重命名为 哈希值.0
2.3 安卓 9 专用证书写入命令
# 推送证书到模拟器临时目录
adb push 哈希值.0 /data/local/tmp/
# 开启读写权限
adb root
adb remount
# 复制到系统证书目录
adb shell cp /data/local/tmp/哈希值.0 /system/etc/security/cacerts/
# 配置证书权限
adb shell chmod 644 /system/etc/security/cacerts/哈希值.0
adb shell chown root:root /system/etc/security/cacerts/哈希值.0
# 验证证书安装成功
adb shell ls /system/etc/security/cacerts/哈希值.0
三、两种代理模式(按需选用)
模式一:普通系统代理(无反代理检测 APP)
# 设置代理,替换为自己电脑内网IP
adb shell settings put global http_proxy 192.168.14.196:8080
# 清空代理
adb shell settings delete global http_proxy
adb shell settings delete global https_proxy
模式二:透明流量转发(防检测 APP 专用,七猫等)
适用:开启系统代理就加载失败的 APP
Burp
1、配置:监听编辑 → Request Handling,勾选隐形代理
2、流量转发命令
adb shell "su -c 'iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-destination 192.168.14.196:8080'"
adb shell "su -c 'iptables -t nat -A OUTPUT -p tcp --dport 443 -j DNAT --to-destination 192.168.14.196:8080'"
adb shell "su -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'"
# 清空转发规则
adb shell "su -c 'iptables -t nat -F'"
四、Frida 环境搭建(安卓 9 稳定无错命令)
4.1 电脑安装依赖
雷电 9 一般是 x86_64 架构 frida-server-17.9.10-android-x86_64.xz
https://link.wtturl.cn/?target=https%3A%2F%2Fgithub.com%2Ffrida%2Ffrida%2Freleases%2Fdownload%2F17.9.10%2Ffrida-server-17.9.10-android-x86_64.xz&scene=im&aid=497858&lang=zh
下载后解压
解压出来 只有一个文件:frida-server
把它 直接放到 D:\burp 目录下
最终路径:
D:\burp\frida-server
pip install frida-tools
frida --version
4.2 推送服务端文件
adb push D:\burp\frida-server /data/local/tmp/
adb shell su -c "chmod 755 /data/local/tmp/frida-server"
4.3 启停 Frida 服务端(最终稳定版)
# 终止残留进程,释放占用端口
adb shell "su -c 'killall frida-server 2>/dev/null'"
# 前台启动服务端(窗口保持打开,不要关闭)
adb shell "su -c '/data/local/tmp/frida-server'"
五、适配多应用 SSL 绕过 JS 脚本
新建 ssl_unpin.js 文件,复制下方全部代码
Java.perform(function () {
console.log("[+] 全局SSL绕过启动");
try {
var TrustManager = Java.registerClass({
name: "com.burp.SSLTrustAll",
implements: [Java.use("javax.net.ssl.X509TrustManager")],
methods: {
checkServerTrusted: function () {},
checkClientTrusted: function () {},
getAcceptedIssuers: function () { return null; }
}
});
var SSLContext = Java.use("javax.net.ssl.SSLContext");
SSLContext.getInstance.overload("java.lang.String").implementation = function (proto) {
let ctx = this.getInstance(proto);
ctx.init(null, [TrustManager.$new()], null);
return ctx;
};
console.log("[+] 系统SSL放行成功");
} catch (e) {}
try {
var WebViewClient = Java.use("android.webkit.WebViewClient");
WebViewClient.onReceivedSslError.implementation = function(view, handler, error) {
handler.proceed();
};
console.log("[+] 网页SSL绕过成功");
} catch (e) {}
console.log("✅ 绕过就绪,可抓取明文数据包");
});
六、标准抓包操作流程
1、模拟器打开需要抓包的 APP
adb shell dumpsys window | findstr mCurrentFocus
输出里会有类似 com.xxx.yyy/.MainActivity 的内容,com.xxx.yyy 就是包名。
2、查询应用进程 PID
adb shell pidof 应用包名
1、注入绕过脚本
frida -U -p 查到的PID -l ssl_unpin.js
操作 APP 页面,Burp 历史列表即可抓取请求数据
八、常见报错快速解决
1、ADB 反复重启
替换模拟器自带 ADB 文件覆盖电脑端即可
2、system 目录无法写入
执行 adb root、adb remount 重新挂载权限
3、Frida 端口被占用
执行 killall frida-server 清理进程后重启服务
4、开代理 APP 加载失败
切换为 iptables 透明转发模式,规避代理检测
5、脚本提示类报错
找不到 OkHttp 类属于 APP 未使用该框架,不影响正常抓包