任鸟飞谈逆向----天涯明月刀抢摊位数据分析
对于很多游戏来说,摆摊的收入都是很客观的,而好的摊位也直接影响着摆摊的收益。以《天涯明月刀》为例,我们来分析下这款游戏的抢摊位 的相关数据。抢摊位这个功能,我们要求的是尽量快,相同的摊位如果想比别人快,自然要通过调用发包来达到摆摊的效果,以下是摆摊包的分析+0 00+1 摊位名字UTF-8+?选中代工数量+?+0+x*?代工结构体编号+?+4+x*?同类代工数量+?+8+?*y+x*?代工ID+?+C+?*y+x*?代工数量+?+11+?*y+x*?代工价格为了不对游戏产生影响,封包的重要偏移我们用?来代替我们发现这里的有代工的相关信息,所以在摆摊之前我们还要对代工的相关做一个整理,以保证游戏可以正确发包[+0xC]代工数组起始地址[+0x10]代工数组结束地址[[代工数组起始地址+n*0x14+0]代工结构体编号[[代工数组起始地址+n*0x14+4]代工对象起始地址[[代工数组起始地址+n*0x14+8]代工对象结束地址[代工对象起始地址+0x14*m+0]代工ID[代工对象起始地址+0x14*m+4]代工标志,是否选中 BYTE型1为选中[代工对象起始地址+0x14*m+C]代工价格[代工对象起始地址+0x14*m+10]代工数量有了游戏的封包,还需要有某个摊位上玩家的摆摊状态,而这个状态在玩家对象下也有存放,我们可以遍历到周围那些玩家在摆摊,如果想在某个玩家摆摊结束时立刻摆摊,那我们还需要调用一个特殊的走路CALL,因为这个CALL的内层有标志位被改写,如果不调用会直接被检测封号,而周围VM代码特别多,所以想分析到具体的某个标志位也不容易,直接调用即可。这样我们就得到了抢摊位 所需要的数据,创建一个线程来循环读取要抢玩家的摊位状态,标志位变化立刻发包,就可以抢到该玩家的摊位。当然这只是一个理想化的情况,如果想要代码效率更快,抢的更稳,还需要将玩家状态变化改成收包获取,将明文包的调用改成send函数的调用,那样难免要分析封包加密和时间戳加密。任鸟飞谈逆向----天涯明月刀抢摊位数据分析
页:
[1]