73.网游逆向分析与插件开发-背包的获取-物品数据的初步数据分析

news2024/11/28 22:45:39

内容参考于:易道云信息技术研究院VIP课

上一个内容:72.网游逆向分析与插件开发-背包的获取-项目需求与需求拆解-CSDN博客

然后首先找切入点:

通过药物来当切入点,药物比较好使用,然后鼠标放到药物上它有名字、种类、说明、数量等,除了数量我们都改不了,所以毫无疑问通过数量来当切入点

然后打开 Cheat Engine 开始搜索,搜出来很多地址

然后使用一个药物之后就还有两个了

然后第二个(0x2109A2BC地址)通过内存修改有变化,也就是说ui界面绘制的时候一定是使用的0x2109A2BC地址,因为第一个地址(0x1F355B64)没有变化

然后这两个地址在使用药物时不同的地方调用了相同的函数对物品的数量进行减1,假数据一般会通过主数据的变化而变化,但是现在改了第二个地址之后,ui绘制的时候有效果,但是假数据(副本数据)没有变化

然后现在的分析:

接下来要找的是这个背包是一个怎样的情况,如果背包是数组的话,它有一个特点是物品的大小是固定的,所以数组的话搜出来物品的地址应该是与数组是等差的,所以接下来搜索下一另一个物品

通过它们的内存地址:也看不出是不是数组,现在的数据量太少,看不出来等差(下面我是直接通过他俩的差值找的第三个,可以通过找这俩的方式再找第三个,然后再计算差值,或者找第四个第五个。。之后,再计算差值)

然后通过2109A4A8-2109A2BC的差值,得到了第三个物品的数量,现在数量时11 

然后修改内存,可以正常修改

所以背包的结构是一个数组,数组里的结构分别是1EC和6E4,通过上方是什么改写了它们可以看出它们应该是同一种数据类型,但是差值不同,这可能6E4这个东西它是物品的详细内容,可能是用在客户端的,那个1EC使用在网络端,现在基本确定,它的9C位置是一个4字节的数量,然后背包是一个数组,通过背包ui移动物品到不同的位置,内存地址不变,但是放过去的物品数量会实时改变,如下图把2位置的商品放到1位置,然后1位置的物品就会跟2位置的物品互换位置,这时内存会实时显示物品的数量,这也就说明原本2位置的数据会复制到数组下标0位置,然后还会把物品1的数据复制到背包数组下标1位置,这里用的不是指针。

然后这样可以找到耐久度了,现在耐久度是43,然后就搜索43

搜出来很多:

然后在换另一个装备到背包数组下标0位置上,下方是衣服耐久是37

然后就又找到了两个

然后可以看出它正好在数量的前面

然后看看它们的偏移,通过是什么访问了它们看,1F355B60没有被访问

98位置

然后找物品的名字,通过字符串搜索

然后找到了两个,现在可以看出物品的名字并不在物品的数据里,因为字符串的地址明显于上面分析的物品数据差异大,也就说明了游戏里物品这个东西,它里面本身是没有名字的,它有的应该是物品的种类,比如一个物品是2号种类,那么2号种类就对应 xxx这个名字不会变,也就是说物品里有一个物品id,通过物品id一定会指向一个名字(这时可能会有算法),所以要找到物品的id还有连接名字的算法

接下来要找物品的id,找的方式,下图中两个物品都是 MP 回复草药,然后让它俩的数量变成一样,然后这时再不断的让它俩互换位置,这样变的数据肯定是id或者其它我们不知道的数据

先采用下图红框里的俩地址:

然后首先找一下它们的起始地址:1F355AC8

然后设置起始位置与结束位置:

然后搜索未知的数据

然后有四个地址

然后修改数据大的发现,物品的图标变了,但是变的规律没找到,它也不是物品种类,如果是物品种类的话名字应该是会发生改变的,由于它图标修改起来没有规律,所以不使用6E8的了

使用1E4的,首先找它的基址

然后设置起始地址与结束地址

然后出了两个

第二个是数量:

然后种类就找到了

然后把武器放在下图位置,看看能不能找到其它数据

搜出很多数据

然后很游戏中武器的说明作对比,可以看出搜出来的是武器的攻击力、命中率、耐久度等

然后换了一个物品,数据全没了,所以它是跟装备有关的数据

然后现在物品最重要的数据已经找到了,如下图红框位置

它的偏移是0x34

现在知道的偏移0x34是物品id,0x9c是数量,0x40是最大耐久度,0x98是耐久度

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1392533.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++I/O流——(4)格式化输入/输出(第二节)

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝 含泪播种的人一定能含笑收获&#xff…

美易官方:盘前:道指期货跌0.4% “恐怖数据”将发布

盘前:道指期货跌0.4% “恐怖数据”将发布 在今日的盘前交易中,道琼斯工业平均指数期货小幅下跌0.4%,市场正在等待即将发布的“恐怖数据”——美国零售销售数据。这一数据被视为衡量美国经济健康状况的重要指标,因此备受关注。 由于…

黑马程序员JavaWeb开发|案例:tlias智能学习辅助系统(6)解散部门

指路(1)(2)(3)(4)(5)👇 黑马程序员JavaWeb开发|案例:tlias智能学习辅助系统(1)准备工作、部门管理_tlias智能…

实战 | OpenCV两种不同方法实现粘连大米粒分割计数(步骤 + 源码)

导 读 本文主要介绍基于OpenCV的两种不同方法实现粘连大米分割计数,并给详细步骤和源码。源码和图片素材见文末。 背景介绍 测试图如下,图中有个别米粒相互粘连,本文主要演示如何使用OpenCV用两种不同方法将其分割并计数。 方法一:基于分水岭算法 基于分水岭算法…

c++多态与虚函数

多态是什么? 多态(Polymorphism)是面向对象编程中的一个核心概念,它来源于希腊语,意为“多种形态”。 从字面意思理解,多态是指函数有多种形态(实现)。换句话说,运行阶段…

统计学-R语言-5.1

文章目录 前言随机性和规律性概率变量的分布离散型--二项、泊松、几何二项分布几何分布泊松分布 连续型--均匀、正态均匀分布正态分布 其它统计分布--χ2分布、t分布、F分布χ2分布t分布F分布 练习 前言 从本篇文章开始介绍有关概率与分布的介绍。 随机性和规律性 当不能预测…

2024阿里云服务器常用配置价格表(原价及活动报价)

2024年阿里云服务器租用费用,云服务器ECS经济型e实例2核2G、3M固定带宽99元一年、轻量应用服务器2核2G3M带宽轻量服务器一年61元,2核4G4M带宽轻量服务器一年165元12个月,ECS云服务器e系列2核2G配置99元一年、2核4G服务器30元3个月、2核4G配置…

2024年外贸新兴市场有哪些 | 箱讯科技国际贸易平台

当前欧美市场经济增速放缓,通胀持续高位导致物价普遍上涨,进一步引发消费疲软。此外,受原材料价格、劳动力、土地等经营成本上升影响,外贸出口企业利润被进一步压缩。 困顿之中,新兴市场成为破局关键,巨大的…

Quartus 软件界面介绍与部分使用技巧

内容太多,只能慢慢补充完善了~ 对一个软件的熟练掌握,不仅在于完成项目工程,还在于对一个软件的各个功能的位置与使用要熟稔于心(个人看法)。 软件界面 默认打开的软件界面如下: 关掉所有能关闭的窗口&am…

IDEA中启动项目报堆内存溢出或者没有足够内存的错误

1.报错现象 java.lang.OutOfMemoryError: Java heap space 或者 Could not reserve enough space for object heap 2.解决办法 在运行配置中VM选项后加下面的配置: -server -XX:MaxHeapSize256m -Xms512m -Xmx512m -XX:PermSize128M -XX:MaxPermSize256m

模型Model:文件系统模型QFileSystemModel

一、 1、常用函数 QFileSystemModel自带目录变化监听 1)、 QModelIndex setRootPath(const QString &path); 设置检索根目录 2)、 bool isDir(const QModelIndex &index) const; 选中索引是否为目录节点 3)、 QString filePath(const QModelIndex &index) const;…

LabVIEW图像识别检测机械零件故障

项目背景: 在工业生产中,零件尺寸的准确检测对保证产品质量至关重要。传统的人工测量方法不仅耗时费力,精度低,还容易导致零件的接触磨损。为了解决这些问题,开发了一套基于LabVIEW和机器视觉的机械零件检测系统。该系…

新火种AI|程前怼大佬引发闹剧,但更值得关注的,是大佬的AI观点

作者:小岩 编辑:彩云 在2024年开年的一场演讲大会中,知名网红程前直接炮轰了大佬周鸿祎。事件快速发酵,引起了全网的热烈讨论。很多人都在吐槽程前的情商有多低,大佬有多真性情,却全然忘记了周鸿祎此次参…

unity C#什么是线程锁,以及使用案例

文章目录 原理1. **互斥**(Mutual Exclusion):2. **缓存一致性与内存屏障**:3. **操作系统的支持**:4. **编程语言级别的实现**:5. **避免死锁**:图示 实例1实例2 原理 线程锁的原理主要是为了在多线程环境…

美国智库发布《用人工智能展望网络未来》的解析

文章目录 前言一、人工智能未来可能改善网络安全的方式二、人工智能可能损害网络安全的方式三、人工智能使用的七条建议四、人工智能的应用和有效使用AI五、安全有效地使用人工智能制定具体建议六、展望网络未来的人工智能(一)提高防御者的效率&#xff…

如何优雅的实现主机与虚拟机文件共享?

我们在嵌入式开发中使用虚拟机时,经常需要在主机和虚拟机操作系统之间传输文件。以常用的虚拟机软件 Vmware 为例,如果安装了虚拟机工具,我们可以通过直接拖放文件的方式快速实现文件的交互,但这种方式做不到文件的同步、修改&…

华为路由设备DHCPV6配置

组网需求 如果大量的企业用户IPv6地址都是手动配置,那么网络管理员工作量大,而且可管理性很差。管理员希望实现公司用户IPv6地址和网络配置参数的自动获取,便于统一管理,实现IPv6的层次布局。 图1 DHCPv6服务器组网图 配置思路 …

Android 系统启动过程纪要(基于Android 10)

前言 看过源码的都知道,Launcher系统启动都会经过这三个进程 init ->zygote -> system_server。今天我们就来讲解一下这三个进程以及Launcher系统启动。 init进程 准备Android虚拟机环境:创建和挂载系统文件目录;初始化属性服务&…

Halcon基于灰度值的模板匹配

Halcon基于灰度值的模板匹配 基于灰度值的模板匹配是最经典的模板匹配算法,也是最早提出来的模板匹配算法。这种算法的根本思想是,计算模板图像与检测图像之间的像素灰度差值的绝对值总和(SAD方法)或者平方差总和(SSD…

Java NIO (一)简介

1 NIO简介 在1.4版本之前,Java NIO类库是阻塞IO,从1.4版本开始,引进了新的异步IO库,被称为Java New IO类库,简称为Java NIO。New IO类库的目的 就是要让Java支持非阻塞IO。 Java NIO类库包含三个核心组件: …