【问题标题】:How to read Slither IO websocket binary data with c#如何使用 C# 读取 Slither IO websocket 二进制数据
【发布时间】:2022-03-12 14:13:03
【问题描述】:

我正在尝试使用 csharp 为一个名为 slimher.io 的游戏构建一个自定义客户端,但我遇到了一个小问题:我需要能够读取通过他们的 websocket 发送和接收的二进制数据。

我应该补充一点,您可能还需要像我一样愚蠢地解释它。

这是我需要在 C# 中解码的二进制数据的屏幕截图:

【问题讨论】:

  • 教你如何对其他应用程序使用的二进制协议进行逆向工程,感觉超出了 SO 问题的范围。
  • 尝试将二进制编码为 Base64 字符串。

标签: c# websocket binary


【解决方案1】:

可能不需要自己逆向工程,有一个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。在蛇的情况下,查看它的段是如何放置的、鼠标位置和角度是如何计算的等等会很有用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-05
    • 2014-01-10
    • 1970-01-01
    • 2021-12-24
    • 2011-11-22
    • 2011-08-02
    • 1970-01-01
    相关资源
    最近更新 更多