免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!
本次游戏没法给
内容参考于:微尘网络安全
本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要盲目相信。
工具下载:
链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd=6tw3
提取码:6tw3
复制这段内容后打开百度网盘手机App,操作更方便哦
上一个内容:16.第二阶段x86游戏实战2-发包函数和怎么去找改写过的发包函数
上一个内容中写了send、sendto、WSASend、WSPSend发包函数和逆向的时候怎么找它们,本次就开始找此游戏明文发包位置
打开游戏打开OD,OD并附加到游戏
OD附加到游戏之后按CTRL+G,输入下图红框的内容 ws2_32.send,然后点OK跳转到send函数中,OD第一个打开需要CTRL+G两次
然后就跳转到了下图位置,send函数开始的位置
然后在游戏聊天框里输入一段内容
然后单击下图红框位置,也就是send函数的第一行
然后游戏中会有很多数据包,为了避免被干扰,有一个技巧,鼠标移动到游戏中发送消息的按钮上,然后按F2,F2是OD的打断点快捷键,按了F2打了断点之后鼠标快速点击游戏中发送消息按钮,这样可以0失误的通过发送聊天数据断在send函数上,如下图,下图红框是聊天内容数据,31是Unicode编码它表示数字1,可以看到这个游戏给服务器发送的数据没有加密(调用了send函数数据就会通过网络发送出去所以一般加密是在调用send函数之前)
然后使用Send函数一般会配合多线程使用,不要管什么意思记着就行,使用了多线程在send函数中打断点按CTRL+F9是无法找到功能的,比如上方是通过发送聊天数据触发的断点,在send函数中打断点然后按CTRL+F9是无法找到发送聊天数据的这个功能的代码的
然后下图红框位置是send函数要发送的数据,也就是数据包(封包),它是一个内存地址,可以看到不管怎么运行这个内存地址都不会变,这是因为它有两个线程,一个线程用来给这个内存地址里写数据,一个线程用来从这个内存地址里读数据发送数据,所以我们找的应该是给内存地址写数据的那个线程里的代码
然后选择数据窗口跟随
然后下一个硬件写入断点
然后它就会断下来,现在断下来的位置就是给内存地址写数据的地方
然后点击下图红框位置删除断点,如果下了硬件写入断点没有反应那就检查下图绿框里的地址是否正确,如果不正确删除断点重新打硬件写入断点
删除之后按CTRL+F9,如下图第一层
CTRL+F9,如下图第二层
CTRL+F9,如下图第三层
CTRL+F9,如下图第四层
CTRL+F9,如下图第五层
CTRL+F9,如下图第六层,按六层左右或按到CTRL+F9没反应了位置就不要按了
然后来到第三层,按键盘上的-(减号)就可以恢复按CTRL+F9之前的位置,来到第三层
来到第三层之后打断点,打了断点之后回到游戏做一个会发送数据包的事,比如走路、发送聊天数据,然后发现下图断点位置不管走路还是发送聊天数据都会断下来,所以再来到第四层
怎么回到第四层?如下图红框,如果写了内容
选择用户自定义的注释
然后根据注释列选择,找到那一行直接用鼠标双击就可以跳转过去了
在第四层打断点,然后会发现走路、发送聊天数据不会断下来了,所以0x00CA8B90函数是游戏写数据包内容的函数,也就是第三层才是我们要找的游戏发送数据包函数
然后这个游戏重启内存地址会变化,所以这里要计算一下偏移,这个函数在Game模块中
它的偏移,公式 Game模块基址+0x288B90的位置是发送数据包函数