最近,闲来无事,研究了一下魔域游戏的封包发送与接收,下面,就把分包发送部分的一些东西与大家分享。
相信对游戏进行过逆向分析的人都比较清楚,发送封包能够完成很多意想不到的功能,而这些功能如果通过调用游戏本身的call的话,操是非常繁杂的。所以,可以这么说,发送封包简化了对游戏逆向的步骤。发送分包是控制游戏的万能钥匙。
寻找魔域封包发送的函数并不复杂,复杂的是,怎样去找封包数据的明文,也就是找到封包数据的加密函数。其实,这也不难。只要按照正规方法,耐心寻找,最终,游戏就会像被你扒光衣服的姑娘,呈现在你面。废话不说。步骤如下:
- 在封包发送函数send处下断点。做一个动作,如卖物品,这是,游戏就会断在封包发送的地方。如果你看一下发送数据缓冲区,你会发现,里边全部是密文,相同动作,封包数据完全不同。所以我们必须找到封包加密的函数。
- 在密文封包处下硬件写入断点。这是再卖物品,你会发现,游戏断在了另一个地方。取消硬件断点。返回函数上一级。你会发现,函数的一个参数就是send函数的封包发送缓冲区,很明显,这个函数就是封包加密函数,汇编代码如下:
加密:
00DC0630 55 push ebp
00DC0631 8B6C24 0C mov ebp, dword ptr [esp+C]
00DC0635 56 push esi
00DC0636 33F6 xor esi, esi
00DC0638 85ED test ebp, ebp
00DC063A 7E 6E jle short 00DC06AA
00DC063C 57 push edi
00DC063D 8B7C24 10 mov edi, dword ptr [esp+10]
00DC0641 33C0 xor eax, eax