免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!
本次游戏没法给
内容参考于:微尘网络安全
工具下载:
链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd=6tw3
提取码:6tw3
复制这段内容后打开百度网盘手机App,操作更方便哦
上一个内容:27.x86游戏实战-线程发包的找法
这个游戏它有很多vm(现在把它理解成核心代码隐藏功能)阻止我们逆向分析,它也有很多检测,vm没办法,这个检测的东西后面会写怎么过掉
打开OD并附加到游戏
首先按CTRL+G跳转到ws2_32.send位置打断点,然后会发现断点不会触发
然后再跳转到ws2_32.sendto函数打断点,断点也是没反应
然后再跳转到ws2_32.WSASend函数打断点,看到它可以断下来,这里断的很频繁
然后再看WEPSend,WEP找出方式在send或sendto或WSASend函数里往下滑就可以看到下图红框的两行代码,这就是调用WEPSend函数的特征码,这个特征码要记住(记不住没关系,后面多分析几次记不住也能记住了)
接下来在WEP里打断点,然后按CTRL+F9,看看它能反到什么位置,进入WEP函数的方式,在下图红框位置打断点
断点住之后按F7,按F7之前别忘了取消断点(不取消可能会乱跳)
按完F7就会进入到WSPSend函数里了,如下图
接下来看看次游戏自己实现的send函数在哪,然后在WSPSend函数头部,也就是下图红框位置打断点,然后按CTRL+F9,按CTRL+F9之前别忘了取消断点(不取消可能会乱跳)
第一次按CTRL+F9来到了下图红框位置
然后按F9让代码运行起来,然后按-(减号键盘p上方的减号),按了-之后会来到下图红框位置,也就是会来到按CTRL+F9之前的代码上(这里就会来到WSPSend函数头部)
然后再次给WSPSend函数头部打断点,再次按CTRL+F9,多重复几次,每按一次CTRL+F9就写一个备注然后按-,然后再次在WSPSend函数头部打断点,再次按CTRL+F9,这样多重复主要是观察SWPSend按了CTRL+F9之后会返回到什么位置,这些位置都是游戏发送数据包的函数,需要记录下来
然后经过多次上方说的操作,WSPSend还会CTRL+F9返回到下图位置,并在下图位置写了备注22222,然后继续重复,看看还会不会返回到新的函数里
经过多次在WSPSend函数里CTRL+F9,发现就上方两处,接下来看一看这俩函数,首先是111,这里还是通过在WSPSend函数里按CTRL+F9以断点的方式看
如下图来到111位置
然后再次按CTRL+F9发现111是WSASend函数,WSASend函数是微软(Windows操作系统)提供的,这里先不细看它
然后接下来看2222,来到下图位置,然后按CTRL+F9
然后会来到下图红框位置,这里就发现它跳到了一个叫xxdl的模块里,微软没有提供叫xxdl的模块(我怎么知道的?我不知道都是老师说的) ,它就是自己(游戏公司自己)实现的发送数据包函数,本次先大体看一遍,然后按CTRL+F9
然后来到下图位置,然后按CTRL+F9
然后来到下图位置,然后按CTRL+F9
然后来到下图位置,然后按CTRL+F9
按完CTRL+F9会卡死,然后来到下图位置发现游戏线程全部是暂停状态
然后点击Resume All Threads让线程运行起来
然后会发现游戏弹出了这个弹框,点击确定之后游戏闪退,然后这个问题后面就写怎样跳过它
到这已经大体过了一遍此游戏的发包函数,也有了一个初步的了解,接下来就在本次分析的经验上开始细化
然后WSPSend函数的找法,这个游戏中恰好调用了WSASend函数,然后通过WSASend函数里调用的WSPSend从而找到了WSPSend函数它的头部,那游戏并没有调用WSASend、send、sendto这三个函数,那WSPSend函数怎么找?如果游戏没有调用WSASend、send、sendto这三个函数那就去找别的软件,只要是发送网络数据包的软件基本就可以,应用软件一般不会自己写send函数(发送数据包函数)目前应用软件没有安全监测随便就能搞(实在不行就自己写一个控制台程序调用一个send函数),在应用软件里的WSASend、send、sendto这三个函数分别打断点,然后再找WSPSend(找法与上方写的一样,WSASend、send、sendto这三个函数里往下滑看到WSP然后下一行是call 寄存器),WSPSend函数是Windows操作系统的,内存地址是不会变的,也就是说Windows操作系统开机了WSPSend地址就固定了,所有程序、游戏等它们的WSPSend函数地址都是一样的