47.第二阶段x64游戏实战-封包-分析打怪call

发布于:2025-06-23 ⋅ 阅读:(13) ⋅ 点赞:(0)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!

本次游戏没法给

内容参考于:微尘网络安全

上一个内容:46.第二阶段x64游戏实战-封包-查找拾取单个物品和代码实现辅助捡包

接下来要做自动打怪,自动打怪需要的是遍历周围,得到周围的怪物坐标,遍历周围和坐标现在都有了,现在还差一个打怪的call,所以接下来找打怪call

打怪的过程有两种

1.鼠标点击怪物,首先会选中怪物,然后走过去打怪(特别是近程攻击),如果使用数据包实现打怪的话,如果超出攻击范围它就打不了,所以直接使用封包是不可行的,所以要使用包含走路的call

2.使用鼠标选中怪物,然后按键盘上的技能快捷键,这个也会走过去然后使用技能打怪

不管是第一种还是第二种,它们本质上都是走过去,然后释放技能(普通攻击也是一种技能),当前游戏在它的公共call位置设置断点往上找的方式是找不到可以使用的打怪call,这个原因是,它把打怪和走路写到一起了还可能是在一个寻路里,所以通过公共call找不到,所以就要找别的入口

00007FF63E753CB5!=[rsp]

当前的入口使用鼠标点击,点击地面是点击,点击怪物也是点击,点击矿石也是点击,所以找到鼠标点击call就可以找到打怪call了

然后之前找过打开掉落物,掉落物也是数据鼠标点击,所以就可以直接从打开掉落物这里开始追,然后就来到下图位置

设置断点

使用打开掉落物列表触发断点

CTRL+F9,再按F8来到下图位置

CTRL+F9,再按F8来到下图位置

然后再来到第二层,会发现点击地图,不点击掉落物也会触发,点击怪物也会触发

然后观察入参,r9寄存器的值像是怪物的id

然后按技能快捷键也会触发,然后下图红框位置是技能id(rdx+0x8位置),然后现在看一下技能id从哪来的,要注意当前的call是靠里的,获取技能id的那一层才是理想的外层call,所以在那能找到技能id,就用那一层的call,所以接下来继续CTRL+F9再按F8

rdx来自于rdi,然后rdi来自于rdx

这一层没有rdx的赋值,所以直接CTRL+F9再按F8

然后rdx来自于下图红框位置,但是我们要看的是rdx+0x8位置,所以找rsp+0x28

然后如下图红框 rsp+0x28 来自于ebx,ebx的值来自于edx

然后edx来自于rax,rax来自于rdi+0x8

然后rdi来自于rax

这里通过断点验证是不是技能id,首先刚得到的rax

rax使用的位置,可以看出确实是技能id

所以调用下图红框的函数是最合适的

然后如下图通过断点观察参数,然后还剩一个rcx的值

rcx来自于rbx

rbx来自于人物基址

0x00007FF63ED05F70 - 0x00007FF63E3A0000 = 0x965F70

调用的call也是来自于人物对象(人物对象的虚函数)


img


网站公告

今日签到

点亮在社区的每一天
去签到