58.网游逆向分析与插件开发-游戏增加自动化助手接口-游戏菜单文字资源读取的逆向分析

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

之前的内容:接管游戏的自动药水设定功能-CSDN博客

码云地址(master分支):https://gitee.com/dye_your_fingers/sro_-ex.git

码云版本号:34b9c1d43b512d0b4a3c395b81c03c0b8e8aa374

代码下载地址,在 SRO_EX 目录下,文件名为:SRO_Ex-游戏菜单文字资源读取的逆向分析.zip

链接:https://pan.baidu.com/s/1W-JpUcGOWbSJmMdmtMzYZg

提取码:q9n5

--来自百度网盘超级会员V4的分享

HOOK引擎,文件名为:黑兔sdk.zip

链接:https://pan.baidu.com/s/1IB-Zs6hi3yU8LC2f-8hIEw

提取码:78h8

--来自百度网盘超级会员V4的分享

接管游戏的自动药水设定功能-CSDN博客 它的代码为基础进行修改

修改了分析记录文件

现在我们基本的思路是要改内存,所以首先要确定,改内存的行为可不可行,就要看它的复杂度,复杂度太高那就没办法了,复杂度还行就有的玩了。

正常情况下 自动药水设定 它在内存里一定存在,接下里就搜索,首先打开游戏,然后再打开Cheat Engine

如下图红框里的内容,然后点击首次扫描

可以找到三个地址

修改内存之后游戏中并没有生效,原因也很简单,这种东西肯定只会初始化一次,我们改晚了,接下来就要想办法触发自动药水设定这个地方的变化

触发的方式可以通过修改它的快捷键

然后就改成功了,也就是说当修改快捷键的时候,它是一定会读取,下图红框里的字符串的

接下来找出是什么访问了它,通过更改快捷键,来获取是什么访问了它

然后游戏初始化的时候也会初始化,所以在通过游重新开始找是什么访问了字符串

可以发现它们的地址都是一样的

然后先记入一下信息:不管是通过修改快捷键,还是重新开始,它们的寄存器的值都是一样的,所以下方每个地址只有一个图

接下来打开x96dbg,C50E5C、C51668,优先C50E5C这个地址,然后断到C50E5C地址(通过条件断点,C50E5C是一个被经常调用的函数,不用条件断点没法玩),然后字符串是通过edi寄存器来的,edi的值不知道从哪来,所以按ctrl+f9再按f8来到调用方,先确定一下大体的范围

来到调用方,可以发现在调用方这里,自动药水设定字符串就已经存在了,所以 C50E5C 这个函数不用看了,然后再按ctrl+f9再按f8

再来到上一层,自动药水设定字符串还是存在,我现在要看的是自动药水设定字符串是从哪来的,所以还要往上,所以按ctrl+f9再按f8,来到它的上一层

然后就在栈里没有看到了,这里记入下一它的地址,C3D969

然后给C3D969位置打断点,可以看出它好像是用来处理,快捷键与按钮字符串绑定的,一个拼接字符串的操作

所以再来到它的上一层打断点

可以发现这里只有自动药水设定才会触发

然后可以看到,自动药水设定字符串是通过eax来的,eax寄存器会跟函数返回值有关,所以要注意一下eax的值3是从上一次传递的还是通过函数返回值来的

然后下图红框,在6DA8B8位置,有一个比较,根据下图中的值来说就是 if(F>8){*((char*)(eax+4))}这样的代码,然后继续往下看

意思就是,下图红框位置是一个缓冲区,缓冲区大小是8,所以eax+18位置是字符串的长度,也就是说0xF是长度,接下来也就是我们也调用下图中6DA8B3位置的函数也就能得到字符串的地址,然后通过模拟它的一个基本的判断得出来,最终eax的地址,得出来以后就可以修改了

然后就分析9A46C0函数,直接在返回的位置打断点,找一个eax+18小于8的可以看出eax+4位置是一个字符串,锁定俩字,然后eax+18位置是7,eax+14位置是2,这个2可能就是有效字符的意思,7是缓冲区大小,2是有效字符,所以现在就可以给它的返回值定义一个结构体了

定义的结构体:

typedef struct sro_string{

int un1;

union{

wchar_t title0x4;

wchar_t* Ptitle;

}

int lenth;

int size;

wchar_t* wcstr(){

if(size<0x8){

return title;

}else{

return Ptitle;

}

}

}*psro_string;

psro_string 1036518::ReadTitle(wchar_t* index);

相关推荐
乌萨达1 天前
低配电脑玩手游怎么设置?4GB、8GB内存与模拟器选择指南
游戏·电脑·安卓模拟器·雷电模拟器
林川~012 天前
Unity 万能物理检测工具:射线检测 / 范围检测 / 层级过滤 / 编辑器可视化(可直接拿去用)
游戏·unity·c#·射线检测·通用工具
一孤程3 天前
游戏测试专题第七篇:游戏自动化测试实战
游戏·测试
一孤程4 天前
游戏测试专题第八篇:游戏安全测试与反外挂
游戏·测试
河南花仙子科技5 天前
小游戏社交裂变功能的高阶设计思路
大数据·科技·游戏
一孤程5 天前
游戏测试专题第五篇:游戏兼容性测试与多端适配
游戏·测试
狂人开飞机5 天前
23、实战平台跳跃游戏
游戏·游戏引擎·godot
甲维斯6 天前
0代码,0建模,3句话开发一个3D游戏!
前端·游戏·游戏开发
笨鸟先飞的橘猫6 天前
树结构在游戏行业中的应用
学习·游戏
Sylvia33.6 天前
火星数据体育API|一站式接入足球篮球电竞等18+项目实时数据
java·开发语言·python·websocket·游戏