收包实现一些有趣的东西

张开发
2026/4/12 9:44:17 15 分钟阅读

分享文章

收包实现一些有趣的东西
收包相对于发包来说在安全性上可能没有那么重要因为毕竟所有游戏信息的变更都是在服务器里实现的而收包得到的东西只是服务器告诉我们做了哪些事情。我们在 游戏中看到的大部分的变化其实都是收包通过一系列代码而实现的。那么从服务器收到包以后如何对收包进行拆分如何解密又通过哪个函数分发到各个功能里呢我们随便找一款游戏来分析一下顺便实现一些有趣的东西当然用收包实现的东西只是我们看起来比较好玩却没有实际意义的首先我们附加游戏确定其收包函数为recv在上面下断来观察收包的参数情况。这里的包长并不是非常大的那种而且断的也不是很频繁这说明我们的周围并没有太多的对象进行活动同时游戏也没有实时交互太多的东西。而且暂时看来每一个收包都是独立的这说明游戏的收包可能没有采用粘包的形式统一接收而是在服务器就已经拆分好了。这样的收包分析起来是比较容易我们只要找到其解密函数或者找到明文收包的位置就可以了。在recv重新下断同时进行走路随意收到一个包先跟随rdx然后执行到返回此时rdx中收到最新的包因为是收包函数所以在头部是断不到最新的包的。在断点放开之前下访问断点然后F9运行这时会断到一个memmove函数内部这是大部分收包会经过函数。在这个函数上重新下断然后跟随RCX点击F8步过以后RCX被拷贝了包内容此时的包内容还是密文我们在这个包上再次下访问断点然后点F9运行后断在了一个解密函数内部执行到返回后密文被解密此时我们可以看到这是一个喊话包包内容中出现了111111111的明文现在我们得到了解密函数在返回以后我们在这个解密的明文包上下访问断点F9运行后游戏并没有继续断下这说明在这之后这个包并没有被访问过也就是说明文收包函数其实是解密函数中的那么我们到解密函数中进行分析。在函数中经过以下代码以后解密完成此时我们在明文包上下访问断点F9后游戏断下执行到返回以后可以得到一个虚函数。我们分别在函数执行前和函数执行后对喊话内容进行更改发现在函数执行以后修改游戏中显示的内容是修改前的内容也就是说这个函数执行以后就不会再次对游戏的内容有影响。所以说这个函数就是明文收包函数。我们可以通过调用这个函数或者HOOK这个函数来实现一些有趣的东西。比如我们在喊话以后把等级修改一下得到的函数内容就是999级再比如我们买药品的时候可以将金币修改如果对数据比较的熟悉还可以将掉落和拾取改为我们喜欢的物品等等不过这些都是假的其实很多游戏的皮肤也是通过收包来实现的毕竟这些改动并不会影响游戏的平衡只有自己能够看到。你还能想到可以用收包实现哪些有趣的效果呢

更多文章