第十六节_分析_WebSocket_API_请求

第十六节 分析 WebSocket 与 API 请求

(第2章 安卓逆向基础)

学习目标

学完本节,希望你能够:

  1. 说出 WebSocketREST API 在应用里干啥:WebSocket 做实时双向通信(聊天、推送等),REST API 做请求-响应式数据交互;WSS 是加密的 WebSocket,抓包需先绕过 SSL Pinning
  2. 会用 Burp SuiteMitmproxyWireshark 等拦截和分析 HTTP/HTTPS/WebSocket 流量(仅限授权环境);知道抓 HTTPS/WSS 需先绕过证书校验。
  3. 会用 Frida Hook OkHttpRequestWebSocketWebSocketListener.onMessage 等,拦截或打印 API/WebSocket 数据(仅限授权环境)。
  4. 动手:在授权环境下,对一个应用完成「绕过 SSL Pinning + 抓到一个 HTTPS 或 WebSocket 请求」或「Frida Hook 打出一次 API/WebSocket 消息」。

阅读提示 :涉及抓包、Hook 网络、伪造请求,仅限授权环境、学习与安全研究;不得对他人应用做未授权抓包或传播数据。

常见疑问:WebSocket 和 HTTP API 有啥区别?HTTP 是一次请求一次响应;WebSocket 是长连接,可双向实时发消息。


一、WebSocket 和 API 请求在干啥?

REST API (HTTP/HTTPS)就是常见的「发请求 → 服务器返回」;WebSocket长连接 ,连上后可双向实时 收发消息,适合聊天、推送、实时数据。WSS 是加密的 WebSocket(走 443),抓包也要绕过 SSL Pinning

常见协议一句话

协议 在干啥 抓包注意
HTTP 明文请求-响应 直接代理即可
HTTPS 加密请求-响应 需装 CA、必要时绕过 SSL Pinning
WebSocket / WSS 长连接、双向实时 WSS 同 HTTPS,需绕过 Pinning

记一句:抓 HTTPS/WSS 要先设代理、装 CA,有 Pinning 再用 Frida 绕过(仅限授权)。


二、拦截和分析 API 请求一般怎么干?

在干啥:让应用流量经过你的代理,用 Burp/Mitmproxy/Wireshark 看请求和响应

  1. PC 上开 BurpMitmproxy ,监听 8080 等端口。
  2. 设备 WiFi 设置 HTTP 代理为 PC_IP:8080
  3. 设备上安装抓包工具的 CA 证书
  4. 若应用报证书错误,用 Frida Hook CertificatePinnercheckServerTrusted 等绕过 SSL Pinning(详见第十三节)。
  5. 打开应用,在 Burp 的 Proxy -> HTTP history 里看请求 URL、Header、Body。

注意:仅限授权环境;不得对他人应用未授权抓包。


三、用 Frida Hook API 和 WebSocket 一般怎么干?

在干啥:不依赖抓包工具,在应用进程里 Hook 网络相关类,打印或修改请求/响应

OkHttp 常见:RequestResponseWebSocketWebSocketListener.onMessage。Hook 这些可看到 URL、Body、WebSocket 消息。

Hook OkHttp Request(示例)

js 复制代码
Java.perform(function() {
    var Request = Java.use("okhttp3.Request");
    Request.url.implementation = function() {
        var url = this.url();
        console.log("[*] Request URL: " + url.toString());
        return url;
    };
});

(实际要看应用用的是 Request 的哪个方法,body()、url() 等;若有重载需用 overload。)

Hook WebSocketListener.onMessage(示例)

js 复制代码
Java.perform(function() {
    var WebSocketListener = Java.use("okhttp3.WebSocketListener");
    WebSocketListener.onMessage.overload("okhttp3.WebSocket", "java.lang.String").implementation = function(ws, msg) {
        console.log("[*] WebSocket Message: " + msg);
        this.onMessage(ws, msg);
    };
});

注意:仅限授权环境。


四、伪造 API 或 WebSocket 消息(简要)

在干啥:在授权环境下复现或篡改请求/消息,用于协议分析、测试

  • API :在 Burp 里复制请求,用 Postmancurl 重放;或改 Body/Header 再发。
  • WebSocket :用 Python websocket-client 等连上 WSS,按协议格式 send 消息,观察响应。

注意:仅限授权、合规;不得对他人服务未授权伪造或传播。


本节小结

你只要记住这几条就行:

  1. API = 请求-响应;WebSocket = 长连接、双向实时;HTTPS/WSS 抓包需装 CA,有 SSL Pinning 需 Frida 绕过。
  2. 抓包用 Burp/Mitmproxy 设代理 + 装 CA;分析 API/WebSocket 也可用 Frida Hook OkHttp 相关类。
  3. Hook Request.urlbodyWebSocketListener.onMessage 等可看到 URL、Body、消息;仅限授权、合规
  4. 伪造请求/消息仅限授权环境

本节术语速查

术语 一句话解释
REST API 基于 HTTP 的请求-响应式接口。
WebSocket 长连接、双向实时通信协议。
WSS 基于 TLS 的 WebSocket,走 443。
SSL Pinning 应用只信任指定证书,不信任抓包 CA。

本节思考与练习

  1. 概念:WebSocket 和 HTTP API 在「连接方式」和「数据方向」上有啥区别?
  2. 应用:若你要看一个应用的「发了哪些 API 请求」,你会优先用抓包还是 Frida Hook?各有什么优缺点?
  3. 动手:在授权环境下,对一个应用设 Burp 代理并装 CA;若遇证书错误,用 Frida 绕过 SSL Pinning 后抓到一个 HTTPS 请求。
  4. 动手 :用 Frida Hook 该应用的 OkHttp RequestWebSocketListener.onMessage,打出一次请求 URL 或一条 WebSocket 消息(仅限授权环境)。

下一节预告 :下一节是破解应用限制实战,会把强制更新、区域限制、功能锁定等串起来,用静态分析、改 Smali、Frida/Xposed Hook、API 伪造等做完整流程(仅限授权环境)。

相关推荐
长沙火山4 小时前
第十三节_绕过_SSL_Pinning
逆向·安卓逆向
长沙火山4 小时前
第十四节_Android_代码混淆与解混淆
逆向·安卓逆向
长沙火山1 天前
第二节_如何反编译_APK
逆向·安卓逆向
长沙火山1 天前
第七节_动态调试入门
逆向·安卓逆向
长沙火山1 天前
第十九节_Android_APP_安全机制
逆向·安卓逆向
长沙火山2 天前
第十七节_ELF_文件解析
逆向·安卓逆向
长沙火山2 天前
第十三节_Android_APP_目录结构
逆向·安卓逆向
长沙火山2 天前
第十二节_Android_权限机制
逆向·安卓逆向
长沙火山2 天前
第十六节_反汇编工具介绍
逆向·安卓逆向