抓到的全是乱码
🔀 hexdump 里看到的是看不懂的二进制,不是 HTTP 文本。
可能原因
1. TLS 握手记录
握手期间 SSL_read/SSL_write 也被调用,抓到的是 TLS 记录(非应用明文):
16 03 01 02 00 01 00 00 fc 03 03 ... ← 16=Handshake, 03 01=TLS1.0开头 16 03 0x 是 TLS 记录特征。这些不用管,关注后面的应用数据。
2. 二进制协议
App 用 Protobuf/自定义二进制协议,本来就不是文本。详见:
需用对应工具解析(如 protoc --decode_raw)。
3. 压缩/编码
App 可能对请求体做 gzip/Deflate 压缩或 Base64 编码后再发。抓到的是编码后的字节,需先解码。
4. 加密的应用层
App 在发之前自己又加密了一层(业务加密),SSL 层抓到的是「加密的业务数据」。这是 App 自定义加密,需逆向加密逻辑。
区分方法
看 function 字段和内容:
| 现象 | 判断 |
|---|---|
开头 16 03 0x | TLS 握手记录,忽略 |
开头 47 45 54(GET)/ 50 4F 53(POS) | HTTP 明文 |
二进制 + 栈里有 *Proto* | Protobuf |
| 二进制 + App 自定义栈 | 自定义协议 |
| 看似 Base64 | 编码,需解码 |