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]


相关推荐
m0_552200824 小时前
《UE5_C++多人TPS完整教程》学习笔记37 ——《P38 变量复制(Variable Replication)》
c++·游戏·ue5
染指11109 小时前
35.x64汇编写法(二)
汇编·windows·x64游戏·x64汇编·游戏攻防
Jacen.L2 天前
逆向工程开篇(连载中)
汇编
薛定谔的猫_C8T62 天前
程序人生-Hello’s P2P
c语言·汇编·程序人生·shell·二进制·计算机系统·hello
God_archer2 天前
程序人生-hello’s P2P
linux·c语言·汇编·程序人生
南玖yy2 天前
x86 汇编逻辑运算全解析:从【位操作】到实际应用(AND,OR,NOT,XOR,TEST)
开发语言·汇编·arm开发·后端·架构·策略模式
量子炒饭大师3 天前
项目实战——C语言扫雷游戏
c语言·开发语言·游戏
南玖yy3 天前
深入理解 x86 汇编中的重复前缀:REP、REPZ/REPE、REPNZ/REPNE(进阶详解版)
开发语言·网络·汇编·后端·算法·bochs
Jacen.L3 天前
四、函数调用包含单个参数之Double类型-mmword,movsd,mulsd,addsd指令,总结汇编的数据类型
汇编
开开心心就好3 天前
高效视频倍速播放插件推荐
python·学习·游戏·pdf·计算机外设·电脑·音视频