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

内容来源于:易道云信息技术研究院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 onceclass AIM
{
public:char pad_0000[276]; //0x0000short Name; //0x0114 角色名字长度是7char pad_0115[902]; //0x0115int32_t MP; //0x04A8 蓝量int32_t MaxHP; //0x04AC 最大生命值int32_t MaxMP; //0x04B0 最大蓝量int32_t HP; //0x04B4 生命值char pad_04B8[608]; //0x04B8float x; //0x0718 x坐标float h; //0x071C z坐标float y; //0x0720 y坐标char pad_0724[428]; //0x0724int32_t LV; //0x08D0 等级char pad_08D4[4]; //0x08D4int32_t Exp; //0x08D8 经验char pad_08DC[18]; //0x08DCbool 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.hqwc.cn/news/338056.html

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

相关文章

im6ull学习总结(三-4)freetype显示单个字体

矢量字体引入 使用点阵字库显示英文字母、汉字时,大小固定,如果放大缩小则会模糊甚至有锯齿出现,为了解决这个问题,引用矢量字体。 矢量字体形成分三步: 第1步 确定关键点, 第2步 使用数学曲线&#xff08…

使用Windbg动态调试目标进程的一般步骤详解

目录 1、概述 2、将Windbg附加到已经启动起来的目标进程上,或者用Windbg启动目标程序 2.1、将Windbg附加到已经启动起来的目标进程上 2.2、用Windbg启动目标程序 2.3、Windbg关联到目标进程上会中断下来,输入g命令将该中断跳过去 3、分析实例说明 …

了解不同方式导入导出的速度之快

目录 一、用工具导出导入 Navicat(速度慢) 1.1、导入: 共耗时: 1.2、导出表 共耗时: 二、用命令语句导出导入 2.1、mysqldump速度快 导出表数据和表结构 共耗时: 只导出表结构 导入 共耗时&…

PiflowX-MysqlCdc组件

MysqlCdc组件 组件说明 MySQL CDC连接器允许从MySQL数据库读取快照数据和增量数据。 计算引擎 flink 组件分组 cdc 端口 Inport:默认端口 outport:默认端口 组件属性 名称展示名称默认值允许值是否必填描述例子hostnameHostname“”无是MySQL…

C动态内存分配(被调函数内部指针内存分配)

void *malloc(size_t size); void free(void *); malloc在内存的动态存储区中分配一块长度为size字节的连续存储空间返回该区域的首地址与c中的内存分配new和delete作用相同(但c的可适用范围更广) 当在栈区,被调函数之外需要使用被调函数内部…

【LeetCode】组合两个表(mysql)

题目 编写解决方案,报告 Person 表中每个人的姓、名、城市和州。如果 personId 的地址不在 Address 表中,则报告为 null 。 以 任意顺序 返回结果表。 结果格式如下所示。 答 select firstName ,lastName,city,state from Person left join Address …

npm ERR! Cannot read properties of null (reading ‘matches‘)

1、npm install body-parser 报错npm ERR! Cannot read properties of null (reading ‘matches’) reply: npm cache clean --force,再重新安装 2、cnpm install --save core-js/modules/es.array.push.js core-js/modules/es.error.cause.js core-js/m…

Wilcoxon秩和检验-校正P值(自备)

R语言 boxplot作图 图内展示校正后的P值(padj)_r语言 p值校正-CSDN博客 FDR错误发现率-P值校正学习_fdr和p值的关系-CSDN博客 原理介绍: Benjamini-Hochberg 方法介绍 有N次假设检验,对每一次假设检验都计算其P值,然后将计算出的P值按照…

Docker部署Homepage个人引导页

个人名片: 对人间的热爱与歌颂,可抵岁月冗长🌞 个人主页👨🏻‍💻:念舒_C.ying 个人博客🌏 :念舒_C.ying Homepage | 主页 1. 安装环境2. Docker部署 原作者:無…

深兰科技AI医疗健康产品获3000台采购订单

12月6日,武汉某企业与深兰科技签署协议,一次性采购3000台深兰科技AI生理健康检测仪——扁鹊。 深兰科技AI生理健康检测仪——扁鹊是深兰科技推出的人体生理指标检测产品。基于AI生物技术、融合互联网医疗及AIoT技术,深兰科技AI生理健康检测仪…

MySQL之导入以及导出远程备份v

目录 一.navact数据导入导出 1.1 导入 1.2 导出 二. mysqldump命令导入导出数据 2.1 导入 2.2 导出 三.load data file进行数据导入导出(只限于单表) 3.1 导入 3.2 导出 四.远程连接 好啦就到这里了哦!!!希望帮到你哦!!! 一.navact数据导入导…

【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 版本 四…