自学内容网 自学内容网

27.x86游戏实战-线程发包的找法

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!

本次游戏没法给

内容参考于:微尘网络安全

工具下载:

链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd=6tw3

提取码:6tw3

复制这段内容后打开百度网盘手机App,操作更方便哦

上一个内容:26.x86游戏实战-寻找公共call

上一个内容里通过在send函数上打断点,往上找的方式,发现此游戏使用的是线程发包的方式,从而导致没找到公共call

接下来开始这种线程发包的方式怎么找公共call

首先打开OD并附加到游戏,然后来到ws2_32.send函数上

然后为了方便找,在聊天框输入一段文字

然后在send函数上打断点,然后快速发送一个聊天数据,使用发送聊天数据的功能出发send函数,如下图,使用发送聊天数据出发的send

然后会发现一件事,下图的地址会与上图不一样,因为游戏重启了,下图红框的地址,发送数据包的时候地址还是0x13301020

然后走路触发send函数,然后会发现发送聊天数据与走路触发的数据包使用的内存地址是一样的,这也应对了,封包函数和线程发送数据包函数的玩法,封包函数把数据包写到一个内存里,发送数据包函数从这个内存里读取数据,线程发送数据包函数读完数据把数据通过网络发送到游戏服务器

所以接下来通过在0x13301020地址下硬件写入断点去找

这种位置触发的很频繁,所以手速要快,然后这里还是通过发送聊天数据出发硬件写入断点,下图红框内容是我聊天框里发送的数据

记得删除硬件断点

然后一路ctrl+f9,记得按一次ctrl+f9就双击下图红框位置加一个备注

最终到了第7层它进入到别的模块中了,这也就说明离开了发送聊天数据的代码了,进入到其它的代码里的

然后接下来再次打硬件写入断点,这次通过走路触发断点,看看走路与发送聊天数据出发的发送数据包往上翻的过程在哪开始不一样了

第二层不一样了

然后直接来到了第四层,这里也是走路与发送消息最后一次共用的位置

然后走路当往上反到第9层进入到别的模块中了

通过这样的方式可以看出第4层就是公共call了,接下来开始验证,鼠标右键单击选择用户定义的注释(一般点击之后会有你写过的注释,通过通过注释就可以再次定位到代码,我这里不知道怎么回事它没有了)

点击完的例子(下图是后补的,当时我的确实没有)

幸好上方截图了,用户定义的注释没有也没关系,直接通过ctrl+g跳转过去,来到第4层,然后这里该怎么找这个函数的头部?

然后这个第4层大概就是下图红框的位置,拼接数据包的位置(这个游戏发送的数据包都是明文的没有加密操作)

然后找函数的头部的方式,通过下图红框两个里任意一个就可以找到

这里选择通过走路触发的第5层找,也就是从下图红框的位置找第4层函数的头部

双击下图红框位置进入第4层函数头部

进入第4层函数,如下图可以看到之前备注的4


 


原文地址:https://blog.csdn.net/qq_36301061/article/details/140718084

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!