使用 OllyDbg 理解数据包字节结构

逆向工程 艾达 拆卸 ollydbg 二元分析
2021-07-05 08:53:29

我编写了一个小 dll,它绕过了解密和加密游戏数据包的功能,使我能够看到正在发送和接收的数据包。

login这样的数据包很容易构造,因为它通常只包含用户名和密码,字符选择也有些容易,一些游戏中的数据包如运动也很容易理解,因为它只包含一些x,y数据。

但问题是还有一些其他数据包的长度超过 1000 字节,而且真的无法知道每个字节的含义,比如让我们说您一进入世界就收到了数据包。数据包的很少部分显示了字符 ID、名称、一些统计信息、库存数据,但有些部分只是00 00 00 00我不知道如何制作它们,即使它们实际上有多少字节。

因此,当使用 olly 连接客户端时,我尝试在接收数据包时逐步查看它实际构造字节的位置。但无济于事。

问题:有没有更好的方法来查找数据包上的结构字节数?

例子:

Login Packet
char 16 
char 16

只要我知道它应该是多少字节,它的用途就无关紧要。

干杯,

编辑

看到了这个教程,但在 IDA 中......稍后会尝试并在此处提供反馈。

2个回答

您可以尝试在访问(读/写)此数据时设置内存断点,并查看程序如何解析这些字节。(在转储窗口设置断点,按F9,等待程序停止,分析程序行为-> f8 f8 f8 f8 f8 ...)。我推荐使用 OllyDbg 2.01 - 这个版本有颜色高亮显示转储窗口中的中断。对不起,我的英语不好

请记住, recv 命令之后的缓冲区可能包含多个数据包(或只是一个数据包的一部分)。PS:大多数游戏都有类似的数据包结构,例如:[packet id][len][crc][..data..] 所以,在收到第一个数据包后,您可以在将来拆分所有原始数据以分离数据包。

在我看来,你的 1000 字节+ 数据包可能是地图上的怪物\物品列表,它们的移动等等。