如何使用 C# 读取 Slither IO websocket 二进制数据
How to read Slither IO websocket binary data with c#
我正在尝试使用 csharp 为名为 slither.io 的游戏构建自定义客户端,但我 运行 遇到了一个小问题:我需要能够读取二进制数据通过他们的 websocket 发送和接收。
我要补充一点,你可能还需要像我很笨一样解释一下。
这是我需要在 C# 中解码的二进制数据的屏幕截图:
可能不需要自己逆向工程,有一个 github 项目有一些细节。您可以学习它并尝试逐步编写自己的代码来解析它,可能是在您使用您最熟悉的技术构建的某个沙箱中,例如 winapi、unity 或其他任何技术。稍后您将能够将您创建的代码移动到您需要使用的适当模块和环境中
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 或其他仿真器代码,看看它们如何解析命令。但是用两个词,你可以用逻辑或、与、二进制移位来进行一些解析。例如,如果您对名为“a”的 int (0x1243 (11A3) 12_12_AF) 变量的第三个和第四个字节感兴趣,您可以编写以下内容:
(a >> 3) & 0xFFFF 结果为 0x11A3,因此对于这些命令,您可以使用类似的方法检查它的类型和参数值。通过基本上移动字节并用所需大小的掩码覆盖它们。如果您以字节数组的形式接收此数据,那就更容易了,您只需访问要检查的字节即可。
但是如果你对一些浏览器游戏进行逆向工程,你可以查看一些浏览器 js 代码,使用日志制作一些源代码,如果可以从游戏动态方面有时设置断点并检查接收到的十六进制 ws 数据像 HxD 这样的编辑器。在蛇的情况下,查看其段的放置方式、鼠标位置和角度的计算方式等可能很有用
我正在尝试使用 csharp 为名为 slither.io 的游戏构建自定义客户端,但我 运行 遇到了一个小问题:我需要能够读取二进制数据通过他们的 websocket 发送和接收。
我要补充一点,你可能还需要像我很笨一样解释一下。
这是我需要在 C# 中解码的二进制数据的屏幕截图:
可能不需要自己逆向工程,有一个 github 项目有一些细节。您可以学习它并尝试逐步编写自己的代码来解析它,可能是在您使用您最熟悉的技术构建的某个沙箱中,例如 winapi、unity 或其他任何技术。稍后您将能够将您创建的代码移动到您需要使用的适当模块和环境中 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 或其他仿真器代码,看看它们如何解析命令。但是用两个词,你可以用逻辑或、与、二进制移位来进行一些解析。例如,如果您对名为“a”的 int (0x1243 (11A3) 12_12_AF) 变量的第三个和第四个字节感兴趣,您可以编写以下内容:
(a >> 3) & 0xFFFF 结果为 0x11A3,因此对于这些命令,您可以使用类似的方法检查它的类型和参数值。通过基本上移动字节并用所需大小的掩码覆盖它们。如果您以字节数组的形式接收此数据,那就更容易了,您只需访问要检查的字节即可。
但是如果你对一些浏览器游戏进行逆向工程,你可以查看一些浏览器 js 代码,使用日志制作一些源代码,如果可以从游戏动态方面有时设置断点并检查接收到的十六进制 ws 数据像 HxD 这样的编辑器。在蛇的情况下,查看其段的放置方式、鼠标位置和角度的计算方式等可能很有用