【游戏逆向】《某山奇缘》发包函数

一个游戏我们拿来以后第一件事肯定是要去分析发包函数。

因为发包函数可以给我们很多有用的信息。

第一,所有的功能都可以通过发包实现。

第二,发包中的参数可以获悉游戏中的数据形式,例如某些参数是类型,ID是什么样的值。

第三,通过发包可以得知游戏的通讯方式是否存在漏洞,例如怪物如果死亡的时候发包,那么就有秒怪封包,秒怪功能。

首先我们分别到send,sendto,WSASend 三个发包函数上下断,看是否是发包函数。

send
在这里插入图片描述
sendto
在这里插入图片描述
WSASend
在这里插入图片描述
分别下断以后,发现都不断

偶尔会断下,经过分析以后发现和我们做的发包动作无关。

那么不是这3个发包函数发的包,这个游戏自己实现了发包函数。

通过其他send发包的游戏

我们在send内部调用更内层发包函数WSPSend的位置下断
在这里插入图片描述
找到更内层的发包函数

WSPSend

71384405 6A 44 push 44

71384407 68 80453871 push 71384580

7138440C E8 7FCFFFFF call 71381390

71384411 33FF xor edi, edi

71384413 897D E0 mov dword ptr [ebp-20], edi

71384416 803D B8643B71 0>cmp byte ptr [713B64B8], 0

7138441D 0F85 04240000 jnz 71386827

71384423 393D 5C603B71 cmp dword ptr [713B605C], edi

71384429 0F86 F8230000 jbe 71386827

7138442F FF35 88603B71 push dword ptr [713B6088]

71384435 FF15 D0123871 call dword ptr [<&API-MS-Win-Core-Pro>; kernel32.TlsGetValue

7138443B 8945 D4 mov dword ptr [ebp-2C], eax

7138443E 3BC7 cmp eax, edi

71384440 0F84 E1230000 je 71386827

当然每台电脑的地址是不同的

只有在本台电脑是相同的

我们重新附加灵山奇缘,跳到该地址下断

CTRL+F9返回到真正的发包函数

在这里插入图片描述
通过分析

根据参数的 性质我们分析出来

这是重新实现的WSASend
在这里插入图片描述
在这里插入图片描述

此时再做任何发包动作都会断下了,当然也有心跳包。

猜你喜欢

转载自blog.csdn.net/douluo998/article/details/130665419