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.mzph.cn/news/630584.shtml

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

相关文章

【分布式技术】分布式存储ceph之RGW接口

目录 1、对象存储概念 2、创建 RGW 接口 //在管理节点创建一个 RGW 守护进程 #创建成功后默认情况下会自动创建一系列用于 RGW 的存储池 #默认情况下 RGW 监听 7480 号端口 //开启 httphttps ,更改监听端口 #更改监听端口 ​ //创建 RadosGW 账户 …

【Go学习】macOS+IDEA运行golang项目,报command-line-arguments,undefined

写在前面的话:idea如何配置golang,自行百度 问题1:通过idea的terminal执行go test报错 ✘ xxxxxmacdeMacBook-Pro-3  /Volumes/mac/.../LearnGoWithTests/hello  go test go: go.mod file not found in current directory or any parent …

【LeetCode热题100】【子串】和为 K 的子数组

题目 给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1: 输入:nums [1,1,1], k 2 输出:2示例 2: 输入:nums [1,…

Jet Brains 2023 开发者生态系统现状

一、前言 今天刷到Jet Brains官方发布了2023 开发者生态系统现状,这个相信大家都不陌生,我们的开发工具IDEA就是它旗下的。 分析的蛮不错的,今天整理一下,和大家一起分享。 有想法大家可以一起交流一下哈! 有兴趣的…

unity SqLite读取行和列

项目文件 链接:https://pan.baidu.com/s/1BabHvQ-y0kX_w15r7UvIGQ 提取码:emsg –来自百度网盘超级会员V6的分享 using System.Collections; using System.Collections.Generic; using UnityEngine; using Mono.Data.Sqlite; using System; using Syste…

一文读懂——如何把网站改成HTTPS访问

HTTPS(全称为Hyper Text Transfer Protocol Secure)是一种在计算机网络上进行安全通信的协议,它通过SSL/TLS证书对传输数据进行加密,确保了用户与服务器之间信息交换的私密性和完整性。 获取SSL/TLS证书 选择证书类型&#xff1a…

构建高效数据生态:数据库、数据仓库、数据湖、大数据平台与数据中台解析_光点科技

在数字化的浪潮中,一套高效的数据管理系统是企业竞争力的核心。从传统的数据库到现代的数据中台,每一种技术都在数据的旅程中扮演着关键角色。本文将深入探讨数据库、数据仓库、数据湖、大数据平台以及数据中台的功能和价值,帮助您构建一个符…

《C++入门篇》——弥补C不足

文章目录 前言一.命名空间二.缺省参数三.函数重载四.引用4.1引用做参数4.2引用做返回值 五.内联函数六.小语法6.1auto6.2范围for6.3空指针 前言 C是业内一门久负盛名的计算机语言,从C语言发展起来的它,不仅支持C语言的语法,还新添加了面向对…

Kafka-消费者-KafkaConsumer分析-ConsumerCoordinator

在前面介绍了Kafka中Rebalance操作的相关方案和原理。 在KafkaConsumer中通过ConsumerCoordinator组件实现与服务端的GroupCoordinator的交互,ConsumerCoordinator继承了AbstractCoordinator抽象类。 下面我们先来介绍AbstractCoordinator的核心字段,如…

GO——与PHP的并发对比

背景 go比php可支持的并发数更高,为什么 目标 分析点: 系统的并发瓶颈go语言的并发瓶颈php语言的并发瓶颈 系统并发 参考:https://juejin.cn/post/6844904025553534990 提到并发,我们这里指的是web服务web系统的第一层&…

Apache JMeter 3.1压力测试监控服务器数据(cpu、内存、磁盘io等)

Apache JMeter 3.1压力测试 Apache JMeter 3.1压力测试监控cpu、内存情况1.下载Apache JMeter 3.11.1 添加线程组1.2 添加http请求1.3 增加http请求头设置1.4 添加csv配置1.5 添加测试结果监控配置 2. 监控插件下载3. 服务端插件下载并启动3.1 下载3.2 解压并启动3.3 增加服务器…

渗透测试之Kali如何利用CVE-2019-0708漏洞渗透Win7

环境: 1.攻击者IP:192.168.1.10 系统: KALI2022(vmware 16.0) 2.靶机IP:192.168.1.8 系统:Windows 7 6.1.7601 Service Pack 1 Build 7601 已开启远程协助RDP服务开启了3389端口 问题描述: KALI 如何利用CVE-2019-0708漏洞渗透Win7 解决方案: 1.打开kali,msf搜索…

【每周AI简讯】GPT-5将有指数级提升,GPT Store正式上线

AI7 - Chat中文版最强人工智能 OpenAI的CEO奥特曼表示GPT-5将有指数级提升 GPT奥特曼参加Y-Combinator W24启动会上表示,我们已经非常接近AGI。GPT-5将具有更好的推理能力、更高的准确性和视频支持。 GPT Store正式上线 OpenAI正式推出GPT store,目前…

​一套uni-app + .net医院线上预约挂号系统源码(公众号+小程序预约挂号)

线上预约挂号系统构建了医院和患者的连接,通过改善患者院内的就医服务流程,以微信公众号、支付宝小程序为患者服务入口,为居民提供导诊、预约、支付、报告查询等线上线下一体化的就医服务,缩短患者就诊环节,提高医疗机…

springboot第50集:File类,IO流,网络编程,反射机制周刊

image.png FileReader、FileWriter的使用 FileInputStream、FileOutputStream的使用 image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png 服务器内存优化是一个复杂的过程,通常需要综合考虑…

深入了解 Pytest Markers:提升测试用例的组织和控制能力

​从这篇开始,逐一解决fixture是啥?mark是啥?参数request是啥?钩子函数是啥?parametrize参数化是啥?这些问题。本片先介绍一下mark是啥?以及如何使用 Markers有啥用? 当使用 Pytest…

ZooKeeper 实战(五) Curator实现分布式锁

文章目录 ZooKeeper 实战(五) Curator实现分布式锁1.简介1.1.分布式锁概念1.2.Curator 分布式锁的实现方式1.3.分布式锁接口 2.准备工作3.分布式可重入锁3.1.锁对象3.2.非重入式抢占锁测试代码输出日志 3.3.重入式抢占锁测试代码输出日志 4.分布式非可重入锁4.1.锁对象4.2.重入…

SAP PI之Rest adapter

一,简介 REST风格接口是以http为传输协议,以xml或json或text为有效负载。下图展示了REST到XI再返回的一个过程,一个REST接口包含的信息有:服务URL、URL中带的参数、http方法(post/get/put等)、http头部、body部分的有效载荷。而X…

Sentinel限流、熔断

1、限流 单个服务节点限流 sentinel 提供了两种不同的隔离机制:信号量隔离和线程池隔离,它们的主要区别如下: 信号量隔离(Semaphore Isolation): 原理:信号量隔离基于计数器(或称令…