Skip to content

抓到的全是乱码 ​

🔀 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 0xTLS 握手记录,忽略
开头 47 45 54(GET)/ 50 4F 53(POS)HTTP 明文
二进制 + 栈里有 *Proto*Protobuf
二进制 + App 自定义栈自定义协议
看似 Base64编码,需解码

相关文档 ​

基于 VitePress 构建 · 教学用途