一个游戏我们拿来以后第一件事肯定是要去分析发包函数。因为发包函数可以给我们很多有用的信息。第一,所有的功能都可以通过发包实现。第二,发包中的参数可以获悉游戏中的数据形式,例如某些参数是范例,ID是什么样的值。第三,通过发包可以得知游戏的通讯方式是否存在漏洞,例如怪物如果死亡的时候发包,那么就有秒怪封包,秒怪功能。 起首我们分别到send,sendto,WSASend 三个发包函数上下断,看是否是发包函数。send
sendto
WSASend
分别下断以后,发现都不断偶尔会断下,经过分析以后发现和我们做的发包动作无关。那么不是这3个发包函数发的包,这个游戏自己实现了发包函数。 通过其他send发包的游戏我们在send内部调用更内层发包函数WSPSend的位置下断
找到更内层的发包函数
WSPSend
71384405 6A 44 push 44
71384407 68 80453871 push
713845807138440C E8 7FCFFFFF call
7138139071384411 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
7138682771384423 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 [; kernel32.TlsGetValue7138443B 8945 D4 mov dword ptr [ebp-2C], eax7138443E 3BC7 cmp eax, edi
71384440 0F84 E1230000 je
71386827
当然每台电脑的地点是差别的只有在本台电脑是相同的我们重新附加灵山奇缘,跳到该地点下断 CTRL+F9返回到真正的发包函数
通过分析根据参数的 性质我们分析出来这是重新实现的WSASend
此时再做任何发包动作都会断下了,当然也有心跳包。
来源:通化程序员—投稿
*转载请注明来自游戏安全实验室(GSLAB.QQ.COM)
来源:http://www.12558.net
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |