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,一经查实,立即删除!

相关文章

Java注解技术

1. 注解的简介 从JDK 5开始,Java增加了对元数据(MetaData)的支持,也就是注解(Annotation)。 注解就是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处…

【分布式技术】分布式存储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…

LeetCode刷题--- 买卖股票的最佳时机含冷冻期

个人主页:元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 ​​​​​​http://t.csdnimg.cn/6AbpV 数据结构与算法 ​​​http://t.csdnimg.cn/hKh2l 前言:这个专栏主要讲述动…

一个月学会Python,零基础入门数据分析

在数据分析领域,python是一个绕不开的知识和工具,如果不会用python就很难说自己会数据分析,但是最近很多想要入门数据分析的小白经常问我,Python怎么入门?Python虽然被称作是“最简洁的语言”,但是它终究还…

Jenkins 敏感信息实战指南

在 Jenkins 中,安全地管理敏感信息对于构建和部署过程至关重要。本实战指南将详细介绍如何添加凭据、使用 HashiCorp Vault 插件,并通过创建 Pipeline 脚本、在 shell 脚本中使用,以及在 Python 脚本中使用来管理敏感信息。 步骤 1: 添加凭据…

一文读懂——如何把网站改成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语言的语法,还新添加了面向对…

java基础之设计模式(单例模式,工厂模式)

设计模式 是一种编码套路 单例模式 一个类只能创建一个实例 饿汉式 直接创建唯一实例 package com.by.entity; ​ /*** 单例模式-饿汉式*/ public class ClassA {//static: 1. newClassA可以访问返回 2. 静态属性内存中只会存在一个//private: 防止外界直接访问属性priva…

redis总结--常见问题与解决办法,推荐等级

因为csdn只支持这种文档形式:不支持思维导图: 更好友好的阅读:可以看我的飞书--------思维导图(这样食用更加): 缓存穿透问题原因每次从缓存中都查不到数据,而需要查询数据库,同时数…

Kafka-消费者-KafkaConsumer分析-ConsumerCoordinator

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

GO——与PHP的并发对比

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

如何在Linux上安装Stable Diffusion WebUI

Stable Diffusion WebUI是一个基于AUTOMATIC1111的stable-diffusion-webui仓库的项目,允许用户通过web界面轻松地生成AI驱动的图像。本文将指导您在Linux系统上完成Stable Diffusion WebUI的安装过程。 准备工作 在安装Stable Diffusion WebUI之前,请确…

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搜索…