我如何只使用Wireshark逆向工程基于UDP的自定义游戏协议?我可以记录大量流量,但接下来怎么做呢?我的目标是编写一个分析器插件,最终能够解码游戏命令。这看起来可行吗?我可能会面临哪些挑战?命令是否可能加密?
我如何只使用Wireshark逆向工程基于UDP的自定义游戏协议?我可以记录大量流量,但接下来怎么做呢?我的目标是编写一个分析器插件,最终能够解码游戏命令。这看起来可行吗?我可能会面临哪些挑战?命令是否可能加密?
是的,这是可行的。但实际上它会取决于所涉及的游戏。压缩会使你的工作更加困难,而加密则几乎不可能(至少不能通过Wireshark - 你仍然可以获取内存中的数据)。
最好的方法可能是有条不紊地进行 - 不要记录“大量的流量”,而是执行游戏中的单个操作或命令,查看发送出去的数据。然后你可以查看数据包并尝试发现任何有趣的内容。通常情况下,你不会从中学到很多东西,因此请尝试另一个命令,并将新消息与第一个进行比较。哪些部分在相同的位置?哪些部分已经移动了?哪些部分完全改变了?特别查找一个固定位置附近的值,该值可能描述了消息类型。一般而言,在数据包的开头会是通用的内容,例如标头,而数据包的后面部分将是特定于消息的内容。考虑到UDP协议通常具有自己的手工编写排序或可靠性方案,你可能会在开始附近找到序列号。
了解你的数据类型很有用。例如,整数值可能以大端或小端格式存储。许多游戏会将数据作为浮点值发送,因此请注意连续2或3个浮点值,这些值可能描述位置或速度。