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

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

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


相关推荐
跃渊Yuey1 小时前
【C++笔记】AVL树
c++·笔记
咖猫1 小时前
Guava 提供了集合操作 `List`、`Set` 和 `Map` 三个工具类
windows·list·guava
Want5952 小时前
C/C++圣诞树
c语言·开发语言·c++
liwension2 小时前
Qt中C++泛型实现ORM操作数据库SQLite实战
数据库·c++·qt
在西湖雾雨中起舞2 小时前
题目 2794: 求平均年龄
数据结构·c++·算法
专科在努力!2 小时前
STL中的deque(双端队列),存储结构与使用
开发语言·c++·stl
呆呆在发呆.3 小时前
数据结构复习总结(期末前更新)
数据结构·c++·算法·链表·贪心算法·柔性数组
Cchengzu3 小时前
百度23届秋招研发岗A卷
开发语言·数据库·c++
A_New_World3 小时前
线程池、内存池 和 数据库连接池
linux·服务器·c++
唐棣棣4 小时前
期末速成C++【类和对象】
开发语言·c++