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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最终生成的角色类:

#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

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

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

打开 Cheat Engine 搜索1114

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

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

然后就找到了

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

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

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

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

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

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

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

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

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

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

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

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

然后找等级:

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

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

然后找出是什么访问了它

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

 偏移8D0位置是等级

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

然后经验值:当前是146606

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

然后就只有一个

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

然后改一下:可以正常改

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

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

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

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

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

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

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

然后技能点数:

然后学习一个技能:

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

使用11 搜索内存并修改

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

可以正常修改:

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

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

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

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

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

x坐标的访问:

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

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

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

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

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

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

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

等爆气结束

然后再通过减少的数值搜索66.网游逆向分析与插件开发-角色数据的获取-角色类的数据分析与C++还原_第31张图片

就找到了

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

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

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

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

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

你可能感兴趣的:(c++,开发语言,游戏)