21.第二阶段x64游戏实战-分析采集物偏移

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

本次游戏没法给

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

上一个内容:20.第二阶段x64游戏实战-代码实现遍历周围

上一个内容里把遍历周围的npc和玩家写到了我们的列表中显示,发现采集物,比如宝箱、矿石、药材等没有名字,或者说采集物名字的偏移和人物的偏移不是同一个,所以接下来要找采集物名字的偏移是什么

首先采集物没有名字,改怎么找?

第一种方式,我们有它的对象,直接去这个内存地址里看看,哪一个像名字,找之前要知道一个东西,名字在对象里是以什么样子存在的,名字是一个字符串,Unicode编码一个中文两个字节,在对象中名字是一个内存地址,这个内存地址指向了一个字节(中文)这样的形式,继续往下看,看到了就懂了

然后打开x64dbg跳转到内存,如下图

如下图如果是内存地址鼠标右击会有 在内存窗口中转到指定QWORD 这个选项的

如下图不是内存地址就不会有 在内存窗口中转到指定QWORD 这个选项

然后名字的位置不会很深,如果很深通过这种方式没法找很难找,要用别的方式,最终在偏移0x150位置发现了名字(采集物对象中没有几个值是内存地址所以很好找,如果采集物对象中地址很多就很难找可能会没法找),如下图红框

然后右击选择 内存2

然后跳转过去之后,下图红框位置就是名字的内存地址

然后在 内存3中显示

下图红框就是名字了

上面是第一种方式,下面开始第二种方式通过对采集物的名字设置访问断点来找,下图是游戏中的采集物,虽然打了马赛克,依然可以看出它在地图上是没有名字的,没有名字该怎么办?

经过研究游戏,发现它在地图上没有名字,但是在小地图上鼠标移动上去的时候是有名字的,下图红框位置就是名字,它的名字是铜矿

然后打开CE,当前游戏是Unicode编码所以要勾选代码页,否则搜索不出来

搜索完发现了一件事,如下图我们要的是铜矿,但是搜索出来了铜矿石、铜矿脉这些不需要的东西,而且有176个,很难找我们要的铜矿

这里要知道一点,字符串是以0结尾的,如下图第一种方式找的名字,可以发现它是有个00的,这个00就是字符串的结尾,所以可以利用这一点重新使用CE搜索

然后如下图

然后双击下图红框位置

然后选择字节数组

可以看到铜矿石的编码(编码是一个称呼,可以理解成计算机认识的二进制数据,下面是以十六机制显示的,所以实际上还是计算机认识的二进制数据只是显示模式不一样),然后双击下图红框位置

把 CD AD BF F3 CA AF 复制一下,然后新的扫描

然后选择字节数组

之前说过一个中文两个字节 CDAD是铜字 BFF3是矿字,然后给它们写一个结尾符00

然后点击首次扫描

可以找到两个了

如下图红框,过了一会发现有一个变了,所以就剩下一个了

然后如下图复制地址来到x64dbg,在内存窗口中跳过去

然后设置访问断点

然后就跳转到了下图红框位置,这里rdx访问了名字

然后删除硬件断点

然后开始分析代码、

然后断点发现rsi的值就是采集物的地址,通过跟之前写的遍历周围的对象做对比发现的

采集物的公式是[[对象地址+0x150]+0x8]


相关推荐
Alfred king7 小时前
面试150 生命游戏
leetcode·游戏·面试·数组
向宇it17 小时前
【unity游戏开发——网络】网络游戏通信方案——强联网游戏(Socket长连接)、 弱联网游戏(HTTP短连接)
网络·http·游戏·unity·c#·编辑器·游戏引擎
ii_best1 天前
按键精灵 安卓脚本开发:游戏实战之自动切换账号辅助工具
游戏
Alfred king11 天前
面试150跳跃游戏
python·leetcode·游戏·贪心算法
Ronin-Lotus11 天前
微处理器原理与应用篇---ARM常见汇编指令
汇编·arm开发·微处理原理与应用
D1555408805811 天前
游戏护航小程序源码游戏派单小程序搭建游戏代练小程序源码
游戏
旧物有情11 天前
Unity2D 街机风太空射击游戏 学习记录 #12QFramework引入
学习·游戏
帅_shuai_11 天前
UE5 游戏模板 —— FirstShootGame
游戏·ue5
Jooolin12 天前
【Python】什么?Python 可以用来写 Galgame?
python·游戏·ai编程
鱼雀AIGC12 天前
如何仅用AI开发完整的小程序<6>—让AI对视觉效果进行升级
前端·人工智能·游戏·小程序·aigc·ai编程