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

内容参考于:易道云信息技术研究院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.rhkb.cn/news/240360.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[zabbix] zabbix监控其他

一、温习zabbix自定义监控 二、zabbix 自动发现与自动注册 2.1 zabbix 自动发现 //zabbix 自动发现(对于 agent2 是被动模式) zabbix server 主动的去发现所有的客户端,然后将客户端的信息登记在服务端上。 缺点是如果定义的网段中的主机数…

node.js(express.js)+mysql实现注册功能

文章目录 实现步骤一、获取客户端提交到服务器的用户信息,对表单中的数据,进行合法性的效验 代码如下:二、检测用户名是否被占用三、对密码进行加密四、插入新用户(完整代码)总结 实现步骤 一、获取客户端提交到服务器的用户信息…

微信小程序canvas画布图片保存到相册官方授权、自定义授权、保存

关键步骤介绍 wx.getSetting可以获取授权信息。 wx.authorize首次授权时会打开弹框让用户授权,若用户已选择同意或拒绝,后续不会再显示授权弹框。 如果授权信息显示未进行相册授权,则打开自定义弹框(show_auth: true&#xff0…

[Python练习]使用Python爬虫爬取豆瓣top250的电影的页面源码

1.安装requests第三方库 在终端中输入以下代码(直接在cmd命令提示符中,不需要打开Python) pip install requests -i https://pypi.douban.com/simple/ 从豆瓣网提供的镜像网站下载requests第三方库 pip install requests 是从国外网站下…

深度学习记录--梯度消失和爆炸

梯度消失和爆炸的产生 当神经网络层数很大时&#xff0c;即很大时&#xff0c;w与1之间的大小关系会产生梯度消失与梯度爆炸的问题 当w<1时&#xff0c;会非常小&#xff0c;梯度消失 当w>1时&#xff0c;会非常大&#xff0c;梯度爆炸 解决方法 权重初始化 层数n越大…

一、Flask学习之HTML

一、Flask学习之HTML 1.运行简单页面 首先需要搭建环境&#xff1a; pip install flaskfrom flask import Flaskapp Flask(__name__)# 创建了网址 /show/info 和函数index之间的对应关系&#xff0c;以后用户在浏览器上访问/show/info&#xff0c;网站自动执行index函数 ap…

创建审批流程极简培训教程

流程审批创建指导文档 本文档适用于使用快速了解审批流程的概念&#xff0c;以钉钉流程创建为例&#xff0c;构建极简指导&#xff0c;因为很多人对于这些术语不够熟悉&#xff0c;也很难在很短的时间成为专家&#xff0c;那么使用此文档&#xff0c;很快上手。 概念澄清 需要…

跟着cherno手搓游戏引擎【8】按键和鼠标的KeyCode

自定义KeyCode 先把glfw3.h里的KeyCode的定义抄到咱这里来。 在YOTO下创建KeyCode.h: #pragma once#ifdef YT_PLATFORM_WINDOWS///从glfw3中拿的 #define YT_KEY_SPACE 32 #define YT_KEY_APOSTROPHE 39 /* */ #define YT_KEY_COMMA 44…

【深度强化学习】目前落地的挑战与前沿对策

到目前为止&#xff0c;深度强化学习最成功、最有名的应用仍然是 Atari 游戏、围棋游戏等。即使深度强化学习有很多现实中的应用&#xff0c;但其中成功的应用并不多。为什么呢&#xff1f;本文总结目前的挑战。 目录 所需的样本数量太大探索阶段代价太大超参数的影响非常大稳定…

Luckysheet类似excel的在线表格(vue)

参考文档&#xff1a;快速上手 | Luckysheet文档 一、引入 在vue项目的public文件夹下的index.html的<head>标签里面引入 <link relstylesheet hrefhttps://cdn.jsdelivr.net/npm/luckysheetlatest/dist/plugins/css/pluginsCss.css /><link relstylesheet hre…

C++PythonC# 三语言OpenCV从零开发(1):环境配置

文章目录 前言课程选择环境配置PythonC#COpenCV官网下载新建C项目测试运行Csharp版Python版 gitee仓库总结 前言 由于老王我想转机器视觉方向的上位机行业&#xff0c;我就打算开始从零学OpenCV。但是目前OpenCV有两个官方语言&#xff0c;C和Pyhont。C# 有大佬做了对应的Open…

使用 Neo4j 和 LangChain 集成非结构化知识图增强 QA

目前基于大模型的信息检索有两种方法&#xff0c;一种是基于微调的方法&#xff0c;一种是基于 RAG 的方法。 信息检索和知识提取是一个不断发展的领域&#xff0c;随着大型语言模型&#xff08;LLM&#xff09;和知识图的出现&#xff0c;这一领域发生了显着的变化&#xff0…

Docker五部曲之四:Docker Compose

文章目录 前言Compose应用程序模型Compose规范顶层属性servicenetworkvolumesconfigssecrets 环境变量.env文件environment属性主机shell中的环境变量 Profiles&#xff08;剖面&#xff09;启动剖面自动启动剖面和依赖项解析 多compose.yml文件共享与扩展构建规范构建属性 部署…

Java根据模板文件生成excel文件,同时将excel文件转换成图片

需求 需要将指定数据导出成表格样式的图片&#xff0c;如图 业务拆解 定义一个导出模板将得到的数据填入模板中&#xff0c;生成excel文件将ecxel文件转换成png格式的图片 代码实现 需要引入的依赖 <dependency><groupId>cn.hutool</groupId><artif…

[C++] opencv - Mat::convertTo函数介绍和使用场景

Mat::convertTo()函数 Converts an array to another data type with optional scaling. 该函数主要用于数据类型的相互转换。 The method converts source pixel values to the target data type. saturate_cast<> is applied at the end to avoid possible overf…

maven环境搭建(打包项目)

Maven:直观来讲就是打包写好的代码封装 Apahche 软件基金会&#xff08;非营业的组织&#xff0c;把一些开源软件维护管理起来&#xff09; maven apahce的一个开宇拿项目&#xff0c;是一个优秀的项目构建&#xff08;管理工具&#xff09; maven 管理项目的jar 以及jar与j…

uniapp 简易自定义日历

注&#xff1a;此日历是根据接口返回的日期自动对应星期的&#xff0c;返回的数据中也包含星期&#xff0c;其实就是一个div自定义&#xff0c;可根据自己需求更改&#xff1b; 1、组件代码 gy-calendar-self.vue <template><view class"calendar"><…

华为路由设备DHCPV6配置

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

VLAN区域间路由详解

LAN局域网 WAN 广域网 WLAN无线局域网 VLAN:虚拟局域网 交换机和路由器&#xff0c;协同工作后&#xff0c;将原来的一个广播域&#xff0c;切分为多个&#xff0c;节省硬件成本&#xff1b; 配置思路&#xff1a; 交换机上创建vlan交换机上的各个接口划分到对应的vlan中 T…

meter报OOM错误,如何解决?

根据在之前的压测过程碰到的问题&#xff0c;今天稍微总结总结&#xff0c;以后方便自己查找。 一、单台Mac进行压测时候&#xff0c;压测客户端Jmeter启动超过2000个线程&#xff0c;Jmeter报OOM错误&#xff0c;如何解决&#xff1f; 解答&#xff1a;单台Mac配置内存为8G&…