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

news2024/12/24 1:40:09

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

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位置并没有什么结构体

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

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

相关文章

AlexNet论文精读

1:该论文解决了什么问题? 图像分类问题 2:该论文的创新点? 使用了大的深的卷积神经网络进行图像分类;采用了两块GPU进行分布式训练;采用了Relu进行训练加速;采用局部归一化提高模型泛化能力;…

数据结构期末复习笔记

文章目录 数据结构期末复习第一章:数据结构绪论第二章:顺序表与单链表第三章:其它链表第四章:栈如何中缀转后缀后缀如何计算 第五章:队列第六章:串第七章:树的概念和遍历第八章:赫夫…

window mysql5.7 搭建主从同步环境

window 搭建mysql5.7数据库 主从同步 主节点 配置文件my3308.cnf [mysql] # 设置mysql客户端默认字符集 default-character-setutf8mb4[mysqld] server-id8 #server-uuidbc701be9-ac71-11ee-9e35-b06ebf511956 log-binD:\mysql_5.7.19\mysql-5.7.19-winx64\mysql-bin binlog-…

【Docker项目实战】使用Docker部署nullboard任务管理工具

【Docker项目实战】使用Docker部署nullboard任务管理工具 一、nullboard介绍1.1 nullboard简介1.2 任务看板工具介绍 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍2.3 注意事项 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四…

从像素到洞见:图像分类技术的全方位解读

在本文中,我们深入探讨了图像分类技术的发展历程、核心技术、实际代码实现以及通过MNIST和CIFAR-10数据集的案例实战。文章不仅提供了技术细节和实际操作的指南,还展望了图像分类技术未来的发展趋势和挑战。 一、:图像分类的历史与进展 历史回…

OCS2 入门教程(四)- 机器人示例

系列文章目录 前言 OCS2 包含多个机器人示例。我们在此简要讨论每个示例的主要特点。 System State Dim. Input Dim. Constrained Caching Double Integrator 2 1 No No Cartpole 4 1 Yes No Ballbot 10 3 No No Quadrotor 12 4 No No Mobile Manipul…

Python基础教程——用Python处理Excel!

Excel是一种常见的电子表格文件格式,广泛用于数据记录和处理。Python提供了多个第三方库,可以方便地对Excel文件进行读写、数据操作和处理。本文将介绍如何使用Python对Excel文件进行处理,并提供相应的代码示例和详细说明。 一、安装第三方库…

FreeRTOS学习——任务通知

一、什么是任务通知 FreeRTOS 从版本 V8.2.0 开始提供任务通知这个功能,每个任务都有一个 32 位的通知值。按照 FreeRTOS 官方的说法,使用消息通知比通过二进制信号量方式解除阻塞任务快 45%, 并且更加省内存(无需创建队 列&#…

linux内存浅析

内存的基本概念 操作系统内存非常重要且比较复杂,其中有许多知识点仍然需要掌握才能更进一步分析程序问题。由于是初次全面系统地接触OS内存,目的是为了全面且低层次地理解linux内存相关概念,不会深入其中原理,所以本章也会尽量避…

隐患上报二维码:扫码上报隐患,可实时跟踪整改进度

传统的隐患上报方式通常需要员工填写报告单或口头汇报,不仅消耗大量时间,还可能导致信息传递失真、无法及时跟进隐患处理进度等问题。 可以在草料上搭建隐患上报系统,员工扫码即可上报隐患线索,管理人员可实时收到消息提醒&#…

3D Web可视化开发工具包HOOPS Communicator:提供Web端浏览大型模型新方案!

前言:HOOPS Communicator是Tech Soft 3D旗下的主流产品之一,具有强大的、专用的高性能图形内核,专注于基于Web的高级3D工程应用程序。其由HOOPS Server和HOOPS Web Viewer两大部分组成,提供了HOOPS Convertrer、Data Authoring的模…

备战2024美赛数学建模,文末获取历史优秀论文

总说(历年美赛优秀论文可获取) 数模的题型千变万化,我今天想讲的主要是一些「画图」、「建模」、「写作」和「论文结构」的思路,这些往往是美赛阅卷官最看重的点,突破了这些点,才能真正让你的美赛论文更上…

PACS医学影像报告管理系统源码带CT三维后处理技术

PACS从各种医学影像检查设备中获取、存储、处理影像数据,传输到体检信息系统中,生成图文并茂的体检报告,满足体检中心高水准、高效率影像处理的需要。 自主知识产权:拥有完整知识产权,能够同其他模块无缝对接 国际标准…

基于python热门旅游景点推荐系统+爬虫技术

大数据分析,数据可视化等皆可用。 源码分享。

领域驱动模型之各层实体严格分层处理

为什么要分层处理呢? 在领域驱动模型中,分为应用层(application)、领域层(domain)、基础设施层(infrastructure)。各层只能处理和访问自己所属层的 entity 或者 dto 对象&#xff0…

人工智能在库存管理中的应用

人工智能在库存管理中的应用 目录 人工智能在库存管理中的应用一、什么是库存管理?二、如何利用AI进行智能库存管理?简化整个库存管理流程在仓库中使用基于人工智能的机器人库存管理及配送数据挖掘与处理提供个性化的客户体验 三、利用人工智能改善库存管…

UML期末复习(带习题,选择题,判断题)(持续更新)

UML期末复习 UML简介UML模型图的构成UML事物UML包含4种事物:构件事物: UML模型的静态部分,描述概念或物理元素行为事物:UML模型图的动态部分,描述跨越空间和时间的行为分组事物: UML模型图的组织部分&#…

1 快速前端开发

1 前端开发 目的:开发一个平台(网站)- 前端开发:HTML、CSS、JavaScript- Web框架:接收请求并处理- MySQL数据库:存储数据地方快速上手:基于Flask Web框架让你快速搭建一个网站出来。1.快速开发…

您的计算机已被.LIVE勒索病毒感染?恢复您的数据的方法在这里!

引言: 在数字时代,.LIVE勒索病毒如暗夜中的黑暗调,威胁着个人和企业的数字安全。本文将深入介绍.LIVE勒索病毒的特征,提供解密数据的方法,并讨论预防措施,让我们共同筑起数字世界的防护之墙。数据的重要性…

12.1SPI驱动框架

SPI硬件基础 总线拓扑结构 引脚含义 DO(MOSI):Master Output, Slave Input, SPI主控用来发出数据,SPI从设备用来接收数据 DI(MISO) :Master Input, Slave Output, SPI主控用来发出数据,SPI从设备用来接收…