序列化与反序列化
🔄 App 发包前把对象转成字节流(序列化),收包后还原(反序列化)。r0capture 抓到的是序列化后的字节。
在抓包中的体现
r0capture 抓到的是序列化之后、加密之前的字节流:
| 序列化格式 | 抓到的样子 | 可读性 |
|---|---|---|
| JSON | {"id":123,"name":"x"} | 文本可读 |
| XML | <user id="123"> | 文本可读 |
| Protobuf | 二进制 | 需 .proto 解析 |
| 自定义二进制 | 二进制 | 需逆向格式 |
定位序列化代码
message["stack"] 的调用栈能定位 App 哪个类在做序列化,便于逆向格式:
at com.app.proto.UserProto.toByteArray(UserProto.java:88)
at com.app.net.Client.send(Client.java:42)
...栈里出现 *Proto*/toJson/toByteArray 等即序列化点。