我试图为一个名为slither.io的游戏构建一个定制客户端,但我遇到了一个小问题:我需要能够读取通过websocket发送和接收的二进制数据。
我应该补充一点,你可能也需要解释一下,就好像我是个哑巴。
下面是我需要在C#中解码的二进制数据的屏幕截图:

发布于 2022-03-10 18:47:28
可能不需要自己进行逆向工程,有一个包含一些细节的github项目。您可以学习它,并尝试以增量方式编写自己的代码来解析它,可能是在使用您最熟悉的技术构建的沙箱中,比如winapi、一致性或其他任何东西。稍后,您将能够在需要使用https://github.com/ClitherProject/Slither.io-Protocol/blob/master/Protocol.md#type_l_detail的适当模块和环境中移动所创建的代码。
要解析二进制数据,您必须学习一些额外的内容,编写自己的十六进制查看器将是一种相对简单但足够的方法来学习如何处理二进制文件。我认为本教程是很好的https://www.taniarascia.com/bits-bytes-bases-and-a-hex-dump-javascript/,尽管它是javascript。您可以编写一些解析数据的简单控制台输出,并将其与一些现有的十六进制查看器(如HxD )进行比较。
如果您想更好地掌握它,您可以快速检查一些Chip8或其他模拟器代码,看看它们是如何解析命令的。但是用两个词,你可以用逻辑ors,ands,二进制移位来解析。例如,如果您对名为"a“的int (0x1243 (11A3) 12_12_AF)变量的第三字节和第四字节感兴趣,则可以编写以下内容:
(a >> 3) & 0xFFFF的结果将是0x11A3,因此在出现这些命令时,您可以使用类似的方法检查它的类型及其参数的值。基本上通过移动字节并用所需大小的掩码覆盖它们。如果您在字节数组中接收到这些数据,它将更加容易,您只需访问要检查的字节。
但是,如果您反向设计了一些浏览器游戏,您可以查看一些浏览器js代码,使用日志创建一些源代码,如果可能的话,有时在游戏动态方面放置断点,并在像HxD这样的十六进制编辑器中检查接收到的ws数据。在蛇的情况下,可以看到它的片段是如何放置的,鼠标的位置和角度是如何计算的,等等。
https://stackoverflow.com/questions/68061380
复制相似问题