游戏安全实验室 首页 游戏漏洞 查看内容

【游戏漏洞】天涯明月刀抢摊位数据分析

发布于:2017-12-5 10:59   |    133186次阅读 作者: 管理员    |   原作者: 外部投稿

对于很多游戏来说,摆摊的收入都是很客观的,而好的摊位也直接影响着摆摊的收益。以《天涯明月刀》为例,我们来分析下这款游戏的抢摊位辅助的相关数据。

抢摊位这个功能,我们要求的是尽量快,相同的摊位如果想比别人快,自然要通过调用发包来达到摆摊的效果,以下是摆摊包的分析

+0    00

+1    摊位名字UTF-8

+? 选中代工数量

+?+0+x*? 代工结构体编号

+?+4+x*? 同类代工数量

+?+8+?*y+x*? 代工ID

+?+C+?*y+x*? 代工数量

+?+11+?*y+x*? 代工价格

为了不对游戏产生影响,封包的重要偏移我们用?来代替

我们发现这里的有代工的相关信息,所以在摆摊之前我们还要对代工的相关做一个整理,以保证游戏可以正确发包

[[Base]+0xC] 代工数组起始地址

[[Base]+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函数的调用,那样难免要分析封包加密和时间戳加密。


来源:外部投稿

*转载请注明来自游戏安全实验室(GSLAB.QQ.COM)

分享到:
踩0 赞0

收藏

相关阅读
最新评论
B Color Image Link Quote Code Smilies

发表评论

top 问题反馈

返回顶部