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]


相关推荐
天波信息技术分享2 小时前
AI 云电竞游戏盒子:从“盒子”到“云-端-芯”一体化竞技平台的架构实践
人工智能·游戏·架构
小杨 想拼4 小时前
使用js完成抽奖项目 效果和内容自定义,可以模仿游戏抽奖页面
前端·游戏
qq_5469372721 小时前
一款开源的远程桌面软件,旨在为用户提供流畅的游戏体验,支持 2K 分辨率、60 FPS,延迟仅为 40ms。
游戏
How_doyou_do21 小时前
关于截屏时实现游戏暂停以及本地和上线不同步问题
游戏
李昕壑21 小时前
CS2服务器是何方神圣
游戏
small_wh1te_coder1 天前
GCC深度剖析:从编译原理到嵌入式底层实战
汇编·c++·面试·嵌入式·状态模式·c
wanhengidc1 天前
云手机选哪个比较好用?
服务器·网络·安全·游戏·智能手机
蛊明2 天前
Steam修改游戏安装目录
游戏·steam
白书宇2 天前
5.从零开始写LINUX内核--从实模式到保护模式的过渡实现
linux·汇编·数据库·开源
李昕壑2 天前
FPS游戏时,你的电脑都在干什么(CS2)
游戏