免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!
本次游戏没法给
内容参考于:微尘网络安全
工具下载:
链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd=6tw3
提取码:6tw3
复制这段内容后打开百度网盘手机App,操作更方便哦
上一个内容:32.x86游戏实战-使用物品call
上一个内容把使用物品的函数写到了我们的c++项目中,使用物品算是完结了,接下来找喊话的call
首先还是先来到,公共call,公共call在 29.x86游戏实战-XXX发包函数 这里找的
来到公共call,在下图红框位置,也就是公共call函数头部打断点
打完断点要快速的在游戏中发送一个聊天信息,还有要有一个手感,别追了(ctrl+f9)半天,发现断点不是发送消息触发的,上图红框位置断点住之后在按CTRL+F9之前别忘了取消上图红框位置的断点
然后我发送的数据333333333333333333333
第一次ctrl+f9
第二次ctrl+f9
第三次ctrl+f9
第四次ctrl+f9,到了第四次发现ctrl+f9完成时间边长了,所以这里为了避免游戏崩溃不再按CTRL+F9了,常识先从第四层开始找发送聊天的函数,这就是从下图喊话4位置开始找
喊话4位置一下断点就会卡主,所以很明显不符合发送聊天数据的函数特征,真正的聊天函数打上断点应该除了发送聊天数据其它操作都不会断下来才对
所以来到第三层,第三层不会断下来,发送聊天数据才会断下来,但是第三层的函数它没有参数,没有参数就不符合发送聊天数据的函数特征,真正的聊天数据函数应该要有聊天的内容作为参数才对
所以来到第二层,它只有发送聊天数据的时候会触发,并且如下图红框它的参数里有聊天的内容
到这就找到了聊天函数,接下来找这个函数的值从哪来,首先找ecx的值(为什么找ecx的值?0x9592A0函数多半是一个类的成员函数,ecx是类的基址),然后经过观察,聊天的内容应该会从下图红框的函数里得到,之前说过eax当做函数的返回值来用
断点测试,断点住之后按f7(好习惯是按F7之前先取消断点)
按完F7就进入了函数
然后一路按F8直到执行到函数retn附近,如下图发现ecx的值来自于0x1AB950C位置
然后接下来观察,发送聊天数据的函数其它的参数,经过多次发送聊天数据的测试,发现其它三个函数都不变,这就也符合发送聊天数据的函数
先看一下发送聊天数据的函数有几个参数,进入发送聊天数据的函数来到retn位置,这里retn后面写的是10(十六进制的10换算成十进制是16),所以发送聊天数据的函数有4个参数(一个参数是4字节,4乘4=16)
现在猜测它四个函数都是什么,下图有两个不知道的,但是它俩都是不变的,所以可以直接用
代码:
效果图:
pushad push 0x0 push 0x1001 push 0x2 push 0x647BEA88 mov eax, 0x1AB950C mov ecx,[eax] mov eax,0x9592A0 call eax popad