Make it Better
问道服务端逆向开发(2) - 协议简要分析
2016-10-8 StanWind


抓包久不过多赘述了



我使用的是SmartSniffer 



记得安装winpcap 



过滤代码






include:both:tcp:8001
include:both:tcp:9010-9030


8001是Login的端口 一直到选择线路通信都是在这







9010-9030都可能是各个线路的端口



视具体情况过滤







问道包的结构



[Flag 4Byte][Time 4Byte ][Lenth 2Byte][Command 2Byte][Data]



Flag - 四字节固定包头 4D 5A 00 00



Time - 四字节时间 单位ms 这个时间不是普通的时间戳 是服务端发送过来的一个自定义时间



Length - 两字节长度 从包头开始到数据尾部的长度



Command - 两字节命令号 用来区分功能



Data - 数据块







数据块的序列化根据不同的Command来区分



一般有几种情况(可能不准确)



固定顺序的序列化 里面就是纯数据 int就是4 short就是2 这样的 固定顺序来序列化和反序列化



带数据标识的数据序列化 



[DataEnum 2Byte][DataType 1Byte][Data]



DataEnum - 像命令号一样一一对应着不同的数据



DataType - 目前知道的 01,07代表一位 02 两位  03 四位 04 字符串 







有了这些之后就可以通过command筛选包、对比分析法得出数据标志类型、本地调试包等等方法来慢慢解析了





















发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容