66.网游逆向分析与插件开发-角色数据的获取-角色类的数据分析与C++还原

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

上一个内容:65.网游逆向分析与插件开发-角色数据的获取-项目需求与需求拆解-CSDN博客

ReClass.NET工具下载,它下方链接里的 逆向工具.zip 里的reclass目录下:注意它分x64、x32版本,启动是用管理员权限启动否则附加时有些进程附加不上

链接:https://pan.baidu.com/s/1AUvy5u5FBDyeyQJFLhMSew 
提取码:qkv2 
--来自百度网盘超级会员V5的分享

附加进程:它会谈一个框,找到要附加的进程双击即可

还原类工具ReClass:双击下图红框位置可以设置内存地址,附加进程之后可以显示进程里的内存数据

根据Cheat Engine分析的内存数据:在对应的位置右击选择一个分析出的类型

双击1位置的红框内容,可以设置变量名(写完变量名按回车否则不会生效),双击2位置的红框可以设置注释(这个注释不好点,刚开始需要多点几次才能点着,它也是写完按回车否侧不生效)

设置好分析的数据然后:选择下图高亮的选项可以看c++代码,把它的内容复制到项目的类里即可

如下图红框里的样子:注意它不能显示字符串,中文字符串也就是一个short数组类型

中文数组类型这个要,通过下图高亮的选项一个一个的把内存占位住,然后生成c++代码之后手动改成数组,还要注意如果偏移0x123位置以及设置了类型与变量名,然后又更改了0x123偏移之前的内存地址,这时要注意 ReClass.NET 会把内存搞乱了比如又修改了0x100位置的类型它可能会再0x100-0x123之间插入新加的字节让原本的0x123变成0x124、0x125。。。如果搞乱了就要手动计算一个字节一个字节的删除很麻烦,所以多保存防止这种情况发生

最终生成的角色类:

#pragma once

class AIM
{
public:
	char pad_0000[276]; //0x0000
	short Name; //0x0114 角色名字长度是7
	char pad_0115[902]; //0x0115
	int32_t MP; //0x04A8 蓝量
	int32_t MaxHP; //0x04AC 最大生命值
	int32_t MaxMP; //0x04B0 最大蓝量
	int32_t HP; //0x04B4 生命值
	char pad_04B8[608]; //0x04B8
	float x; //0x0718 x坐标
	float h; //0x071C z坐标
	float y; //0x0720 y坐标
	char pad_0724[428]; //0x0724
	int32_t LV; //0x08D0 等级
	char pad_08D4[4]; //0x08D4
	int32_t Exp; //0x08D8 经验
	char pad_08DC[18]; //0x08DC
	bool Rage; //0x08EE 怒气值
	bool RageEx; //0x08EF 怒气值副本
	char pad_08F0[1883]; //0x08F0
}; //Size: 0x104B

根据角色属性相关的数据会放到一个类里的说法,只需要找到一个其余的也就都找到了,最好找的就是通过蓝去找

打开 Cheat Engine 搜索1114

然后进游戏放几个技能,让蓝发生变化,但是它自己会恢复,所以要预判一下

然后就找到了

然后修改这个地址的值,游戏也会变化,然后就找到了,接下来要确定指针地址,就是人物所有的数据在一个结构体里,我们要找到结构体的头部,找到头部之后再尝试性的看各种数据

然后通过是什么改写了这个地址:

然后看到,它是通过指针加偏移的方式来访问的,也就是ecx刚好就是头部

ecx的值,但是现在不知道数据的大小是多少

找名字的方式,然后这个游戏里对于长度超过8字节的字符串有特殊处理,所以我们还要搞一个名字长的

通过看它的内容区域,可以看出正好有8字节,因为最后面是两个0,字符串是1个0结尾,所以这里有可能还是我们的SRO_String的类型,具体是什么还是要通过一个长的名字来测试,长名字还是能在下方展示的话那就不是SRO_String类型,如果不能那就是SRO_String类型

然后找等级:

然后改写数据:找到了等级

然后找出是什么访问了它

 偏移8D0位置是等级

然后经验值:当前是146606

然后就只有一个

然后改一下:可以正常改

然后找出是什么访问了这个地址:

然后还有然后还有升级经验:

什么都搜不出来:它是通过等级计算出来的

升级经验完全是根据等级来的

然后技能点数:

然后学习一个技能:

使用11 搜索内存并修改

可以正常修改:

然后找出是什么访问了这个地址:

然后坐标:下图红框里的坐标是假的,3D游戏里的坐标都是浮点数

然后找坐标的方式是通过直接看内存的方式,然后通过 Cheat Engine 的内存窗口查看,通过不断的移动修改更新频繁的数据,最终修改下图位置的数据瞬移了,所以它是坐标

然后分别就是x、z、y坐标,目前没有什么证明它们三个不能用,所以先记录下来

x坐标的访问:

然后怒气,下图圈起来的东西,取值范围是1-5

游戏商城里有加满怒气的药水,可以方便调试

这个就要用单字节搜索,通过未知的值找

等爆气结束

然后再通过减少的数值搜索

就找到了

然后是什么改写了它,看到是al证明这是一个bool类型的值

该找的都找了,然后处理名字,然后名字的便宜是1B792DD8-1B792CC4结果是0x114

然后长名字还是在偏移114位置,现在的对象指针地址是169AA604,然后名字是在114位置并没有什么结构体

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS-LocalStorage:页面级UI状态存储

管理应用拥有的状态概述 上一个章节中介绍的装饰器仅能在页面内,即一个组件树上共享状态变量。如果开发者要实现应用级的,或者多个页面的状态数据共享,就需要用到应用级别的状态管理的概念。ArkTS根据不同特性,提供了多种应用状态…

EasyExcel简单实例

EasyExcel简单实例 准备工作场景一:读取 Student 表需求1:简单读取需求2:读取到异常信息时不中断需求3:读取所有的sheet工作表需求4:读取指定的sheet工作表需求5:从指定的行开始读取 场景二:写入…

YOLOv8 Ultralytics:使用Ultralytics框架进行MobileSAM图像分割

YOLOv8 Ultralytics:使用Ultralytics框架进行MobileSAM图像分割 前言相关介绍前提条件实验环境安装环境项目地址LinuxWindows 使用Ultralytics框架进行MobileSAM图像分割参考文献 前言 由于本人水平有限,难免出现错漏,敬请批评改正。更多精彩…

【云原生】springboot 整合 OpenTelemetry

目录 一、前言 二、应用可观测性概述 2.1 什么是可观测性 2.2 可观测性三大指标 2.2.1 指标(Metrics) 2.2.2 日志(log) 2.2.3 追踪(Traces) 三、OpenTelemetry 介绍 3.1 什么是OpenTelemetry 3.2 OpenTelemetry架构和组件…

SMART PLC绝对值定位往复运动控制(脉冲绝对定位+状态机编程)

三菱FX3GA系列绝对定位指令DDRVA实现往复运动控制详细内容介绍请参考下面文章链接: https://rxxw-control.blog.csdn.net/article/details/135570157https://rxxw-control.blog.csdn.net/article/details/135570157这篇博客我们介绍SMART PLC里如何开启绝对值定位指…

隧道自动化监测系统的主要产品和监测内容

一、背景 随着交通行业的不断发展,隧道作为交通基础设施的重要组成部分,其安全和稳定性对于保障人们的生命财产安全具有重要意义。隧道自动化监测系统作为一种先进的安全监测手段,能够实时监测隧道内部的各项参数,为隧道的安全运…

CentOS 7.6的HTTP隧道代理如何支持移动设备和远程用户

在CentOS 7.6上配置HTTP隧道代理以支持移动设备和远程用户,需要考虑到移动网络的特点以及远程用户的需求。以下是一些关键步骤和策略,可以帮助你实现这一目标。 1. 优化移动设备体验 压缩数据:HTTP隧道代理可以用于压缩进出移动网络的数据&…

Fluent 动网格应用:2.5D 网格重构

1 概述 2.5D 网格重构是一种快速网格重构方法,主要应用于涡旋压缩机等存在复杂平面运动且无法简化为二维计算的问题。 涡旋压缩机工作原理(视频源:维基百科) 适用于 2.5D 动网格的问题特点: 计算域几何形状为柱体类形…

(菜鸟自学)搭建虚拟渗透实验室——安装Windows 7 靶机

安装Windows 7 靶机 新建一台虚拟机,并选择Windows 7系统 虚拟机基本配置如下 为虚拟机挂载Windows7的镜像 点击开启虚拟机,将进入安装程序,按如下步骤进行操作: 点击“下一步”》勾选“我接受许可条款”,点击“下…

【读书笔记】《重构_改善既有代码的设计》重构的方法论

重构的方法论 标题:【读书笔记】【读书笔记】《重构_改善既有代码的设计》重构的方法论 时间:2024.01.14 作者:耿鬼不会笑 重构是什么? 什么是重构: “重构”这个词既可以用作名词也可以用作动词。 重构(名词&…

八. 实战:CUDA-BEVFusion部署分析-导出带有spconv的SCN网络的onnx

目录 前言0. 简述1. 使用spconv进行SCN的推理测试2. 导出onnx3. 补充-装饰器钩子函数总结下载链接参考 前言 自动驾驶之心推出的 《CUDA与TensorRT部署实战课程》,链接。记录下个人学习笔记,仅供自己参考 本次课程我们来学习下课程第八章——实战&#x…

如何简单的使用文心一言(高级版)(中国版ChatGPT)

文心一言API高级版使用 一、百度文心一言API(高级版)二、使用步骤1、接口2、请求参数3、请求参数示例4、接口 返回示例5、智能生成API代码 三、 如何获取appKey和uid1、申请appKey:2、获取appKey和uid 四、重要说明 一、百度文心一言API(高级版) 基于百度文心一言语言大模型的…

寄快递有没有什么省钱的小妙招? 怎样寄快递才能省钱呢?

快递物流行业的快速崛起刺激了人们的消费欲望,其中典型的是每每到重大节日尤其是双十一或者双十二,消费市场异常火爆,这也使得快递行业加班加点的干也不追不上人们下单的速度。如今,互联网时代崛起,网购成为了大家最寻…

数据库与SQL

数据库与SQL 学习链接数据库关系型数据库管理系统(RDBMS) SQLSQL介绍SQL类型SQL 基础语言学习创建表(create table)语法 数据类型SQL最常用的数据类型 学习链接 基础篇:数据库 SQL 入门教程 数据库 用于存储数据 存放…

2024年《一个项目征服Java中高级体系》博客计划

终于下决心来写一套大型的Java 笔记,不为别的,就是为了强迫自己将整个Java体系梳理清楚,让自己成为内功扎实的Java高级架构师。牛已经吹出来了,不做对不起网友! 经过一个多月的持续规划,现在终于定好了整体…

Repo命令与git的关系

Repo命令与git的关系是很密切的。 我们都知道,git是一个开源的版本控制系统,常用在大型项目的管理上。 我们对repo的使用和了解就比较少了。Repo是一个基于Git构建出来的工具,它的出现不是为了取代Git,而是为了更方便开发者使用Gi…

vue倒计时60秒改变按钮状态效果demo(整理)

你可以使用Vue的计时器和绑定状态的方法来实现这个功能。 首先&#xff0c;在data中添加一个计时器countdown&#xff0c;初始值为0。 data() {return {countdown: 0} }<template><div><button click"startCountdown" :disabled"countdown > …

RestClient查询和结果处理的Java代码

match_all查询&#xff1a; //查询所有文档 match_all查询Testvoid testMatchAll() throws IOException {// 1.准备RequestSearchRequest request new SearchRequest("hotel");// 2.准备DSLrequest.source().query(QueryBuilders.matchAllQuery());// 3.发送请求Sea…

centos 7 上如何安装chrome 和chrome-driver

centos 7 上如何安装chrome 和chrome-driver 查找自己的服务器是什么系统 cat /etc/os-release这里以centos linux 7为例 下载google-chrome安装包 wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm安装chrome sudo yum localinstall go…