找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 202|回复: 0

任鸟飞谈逆向----天涯明月刀抢摊位数据分析

[复制链接]

管理员

Rank: 9Rank: 9Rank: 9

阅读权限
200
积分
109298
精华
71
主题
138
帖子
154
分享
0
日志
0
在线时间
54 小时
最后登录
2018-4-22
注册时间
2016-11-22
听众
0
收听
0
发表于 2017-12-7 13:59:54 | 显示全部楼层 |阅读模式
对于很多游戏来说,摆摊的收入都是很客观的,而好的摊位也直接影响着摆摊的收益。以《天涯明月刀》为例,我们来分析下这款游戏的抢摊位辅助的相关数据。
抢摊位这个功能,我们要求的是尽量快,相同的摊位如果想比别人快,自然要通过调用发包来达到摆摊的效果,以下是摆摊包的分析
+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函数的调用,那样难免要分析封包加密和时间戳加密。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|鑫郁飞网络科技有限公司 ( 渝ICP备16011958号-1 )

GMT+8, 2018-4-22 16:31 , Processed in 0.069782 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表