5

除了 Wireshark 之外,我该如何对基于 UDP 的自定义游戏协议进行逆向工程?我可以记录一堆流量,但那又如何呢?我的目标是为 Wireshark 编写一个解析器插件,最终能够解码游戏命令。这看起来可行吗?我可能面临哪些挑战?命令是否有可能被加密?

4

2 回答 2

9

是的,这是可行的。但它的实用性将取决于所讨论的游戏。压缩会让你的工作更难,而加密会让它变得不可能(至少通过 Wireshark - 你仍然可以获取内存中的数据)。

解决此问题的最佳方法可能是有条不紊地进行 - 不要记录“一堆流量”,而是在游戏中执行单个操作或命令,然后查看发送了哪些数据来传达信息。然后您可以查看数据包并尝试发现任何感兴趣的内容。通常你不会从中学到很多东西,所以尝试另一个命令并将新消息与第一个消息进行比较。哪些部分在同一个地方?哪些部分移动了?哪些部分完全改变了?特别是在靠近数据包开头的固定位置寻找一个可以描述消息类型的值。一般来说,数据包的开头将是诸如标头之类的通用内容,而数据包的后面部分将是消息细节。

了解您的数据类型很方便。例如,整数值可能以大端或小端格式存储。许多游戏以浮点值的形式发送数据,因此请注意可能描述位置或速度的连续 2 或 3 个浮点数。

于 2009-09-16T10:02:49.977 回答
2

商业游戏预计人们会尝试破解协议作为作弊手段,因此通常会使用加密和篡改检测。

停止此类活动是游戏制作者非常关心的问题,因为当少数玩家拥有超级工具时,它会破坏大多数玩家的体验。对于像在线扑克这样的游戏,后果更加严重。

于 2009-09-15T18:40:46.903 回答