49.第二阶段x86游戏实战2-鼠标点击call深追二叉树

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!

本次游戏没法给

内容参考于:微尘网络安全

本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要盲目相信。

工具下载:

链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd=6tw3

提取码:6tw3

复制这段内容后打开百度网盘手机App,操作更方便哦

上一个内容:48.第二阶段x86游戏实战2-鼠标点击call(打怪call、捡物品call等)

上一个内容里找到了鼠标点击call,本次分析它的入参

然后鼠标点击call只有一个参数,如下图,入参是一个内存地址,然后内存地址里有一个0000FFFF,有一个0,有一个490F6FD0有一个62,其中62应该是怪物id,下图的断点是通过鼠标点击怪物打怪触发的

然后跟进 490F6FD0 地址看它的内容

x96dbg中文显示的不好,使用CE辅助查看,它的内容如下图,是普通攻击,这样说可以把它改成某个技能的内存地址(技能对象)应该可以实现鼠标点击怪物使用技能打怪,而不是使用普通攻击打怪

然后再跟一下技能的数据哪来的,然后也就是查看EAX的数据哪来的

然后这里游戏重启了技能地址变了,现在普通攻击的地址是0x4BE38EA0

然后现在要清楚一件事情鼠标点击call就一个参数,这也就说明这个参数是一个内存地址,也可以说鼠标点击call的参数是一个结构体,然后经过上方的分析(普通攻击这个中文猜测)结构体里第三个位置是普通攻击的技能地址,所以接下来要找谁给这个结构体写入的普通攻击的地址,所以接下来对它进行打硬件写入断点,也就是对下图红框位置下硬件写入断点

鼠标右键单击,然后选择硬件断点,如下图

打完之后来到游戏点击怪物,为了防止其它操作误触发断点,所以要把鼠标快点放到怪物身上然后点击,不要有其它操作,然后断在了下图位置,然后开始分析

然后开始分析,如下图红框edi+8,其中edi是给鼠标点击call传的参数,然后ebx才是我们要找的

然后网上翻了很长发现,ebx的值来自于ebp+C,也就是来自于当前函数第二个参数,所以要CTRL+F9了

然后删除硬件断点

然后按CTRL+F9,来到下图位置,来到下图位置之后看第二个参数

第二个参数是,下图红框位置,然后再找esi的值

然后esi的值来自于下图红框位置,ebp+0x14,也就是第4个参数,第一个参数是0x8,第二个参数是0xC,第三个参数是0x10,第四个参数是0x14,然后又要CTRL+F9了

然后CTRL+F9之后

然后第四个参数是eax,如下图红框

然后push eax上方是一个call,所以eax的值来自于这个call的返回值,所以要进入这个call里看,在下图红框位置打断点,然后鼠标点击怪进行打怪操作触发断点

触发断点之后取消断点,然后按F7进入call

按F7之后,进入call

然后一路按F8看看eax的值在哪来的,然后会发现eax的值来自于edi+0x30,edi的值来自于ecx,ecx又来自于上一层,然后就再返回到上一层(按键盘上的减号就可以返回上一步)

然后ecx的值来自于下图红框位置是一个基址

然后验证它的值

然后可以看出它的值也确实是普通攻击的地址,如下图红框

然后它的值肯定也有人给它写入,所以再对它进行打硬件写入断点

打好硬件写入断点之后,在游戏里用鼠标点击怪物触发打怪,然后就来到下图位置

然后删除刚刚的硬件写入断点

然后开始分析,edi+0x30是其中edi上方找到的那个基址,然后我们要找的是esi,然后esi的值来自于ebp+0x8,也就是来自于函数的第一个参数,所以就要CTRL+F9了

CTRL+F9之后,第一个参数如下图红框是edi,edi的值来自于ecx,ecx的值来自于上一层,所以又要CTRL+F9了

CTRL+F9之后,发现ecx的值来自于eax,eax的值来自于call的返回值

然后在下图红框位置打断点,然后通过鼠标点击怪物触发打怪来触发断点

取消断点,然后按F7

按F7之后进入call,如下图,可以看出它是二叉树

如下图红框二叉树的基址,到这就找完了

到这就把东西都找完了,结束


相关推荐
xiaoye-duck4 小时前
《C++ 工具库实战》gflags 命令行参数解析库详解
c++·第三方库
狂奔的sherry5 小时前
C++ 宏生成访问函数的代价:访问权限、调试和类型检查
c++·宏·编译·预处理器·类型检查
阿尼卡~5 小时前
VS Code 配置 C 语言开发环境(Windows 10/11):从 GCC 安装到运行、断点调试,一篇搞定
c语言·开发语言·windows
划破黑暗的第一缕曙光6 小时前
[C++]:5.STL:string(2)
java·c++·redis
小超人诞生日记9 小时前
C++ 异常机制详解:从抛出捕获到异常安全
c++·算法
多弗朗皮卡丘9 小时前
C++的IO流
开发语言·c++·io流·文件io流
liyi_hz20089 小时前
O2OA(翱途) V10.1 即将发布|功能再升级,安全再加固,协同更高效!
java·javascript·windows·开源软件
xiangyun6110 小时前
C++ 手撕 shared_ptr:引用计数与控制块到底长什么样?
开发语言·c++·算法·面试·stl
SunkingYang11 小时前
C++14 vs C++17:新特性对比与用法指南
c++·新特性·用法·c++14·示例·c++17
SunkingYang12 小时前
C++ Lambda 表达式原理详解
c++·lambda·理论·原理·表达式