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,如下图,可以看出它是二叉树

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

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


相关推荐
2401_891482173 小时前
多平台UI框架C++开发
开发语言·c++·算法
无敌昊哥战神3 小时前
【LeetCode 257】二叉树的所有路径(回溯法/深度优先遍历)- Python/C/C++详细题解
c语言·c++·python·leetcode·深度优先
Darkwanderor4 小时前
三分算法的简单应用
c++·算法·三分法·三分算法
2401_831920744 小时前
分布式系统安全通信
开发语言·c++·算法
2401_877274245 小时前
从匿名管道到 Master-Slave 进程池:Linux 进程间通信深度实践
linux·服务器·c++
汉克老师5 小时前
GESP5级C++考试语法知识(八、链表(三)循环链表)
c++·约瑟夫问题·循环链表·gesp5级·gesp五级
阿贵---5 小时前
C++中的RAII技术深入
开发语言·c++·算法
PiKaMouse.6 小时前
navigation2-humble从零带读笔记第一篇:nav2_core
c++·算法·机器人
vistaup6 小时前
windows git 更新当前目录下所有的文件(非递归)
windows·git
lightqjx6 小时前
【算法】二分算法
c++·算法·leetcode·二分算法·二分模板