我目前正在对一个 mmorpg 的二进制网络协议(protocol)进行逆向工程。 我正在用 java 实现该协议(protocol)。
对于每个数据包类型, 我将创建一个表示二进制数据的类。
例如,聊天数据包(“asd”)
header = 0c75
03 00 61 73 64 00 . . a s d .
java代码:
public class Chat {
private short length;
private String msg;
}
是否有一个库可以将字节数组直接反序列化为对象。基本上类似于 Jackson 或 OrmLite 的二进制数据。
谁知道有没有可以使用的库? 我已经在这里和谷歌上搜索过,但没有找到我要找的东西。 我什至开始编写自己的序列化程序。
最佳答案
每个序列化库(据我所知?)都定义了自己的二进制格式 - 因此二进制表示完全由类/idl 文件确定,不能进行定制以匹配自定义协议(protocol)。常见的二进制格式:
如果您进行逆向工程的协议(protocol)碰巧不是一个常见的协议(protocol)(也许他们在内部使用 proto?)那么您唯一的选择是实现 Serializable/Externalizable你自己,或者带进来 kryo并定义您自己的自定义(反)序列化器 - 无论哪种方式,您都将自己编写 Object <--> byte[]/stream/buffer 转换逻辑。
关于java - 反/序列化二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37310089/