27.第二阶段x86游戏实战2-遍历周围NPC跳出递归循环

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

本次游戏没法给

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

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

工具下载:

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

提取码:6tw3

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

上一个内容:26.第二阶段x86游戏实战2-C++遍历背包物品

上一个内容里通过C++把背包的数据成功读取了出来,然后接下来找周围的NPC,这是想做自动打怪、自动做任务必须的数据,遍历周围NPC算是核心的东西了,然后怎样找周围NPC?可以通过对象里面的变量,比如说名字、血量

本次就通过附近NPC的名字去追

npc特点说明:附近NPC一般游戏会不断的遍历附近NPC这个数据,也就是不断遍历npc列表,所以只要通过CE找到了地址那它一定是在循环里

首先打开游戏,打开CE,并使用CE附加到游戏里

搜索完有314个结果

然后把结果全选然后点下图红框

然后在下图红框位置选中大概一半的数据

通过修改进一般的内存地址,发现游戏中npc的名字并没有被影响,所以现在选中的都不是npc的名字,可以把它们都给删了,注意游戏在后台运行的时候不后悔刷新页面,所以最好修改完了数据用鼠标点击点击游戏中的npc

删除地址

然后再对剩下的数据选中一半然后修改,看看会不会在游戏中影响到npc的名字,修改完还是没影响,所以把这次选中的地址也全部删除

然后继续重复上面的步骤,最终找到了名字的地址,然后打开OD进行断点调试

使用dd指令在内存窗口中跳转过去

然后下硬件访问断点

通过硬件访问断点就来到了下图位置,ecx的值是名字,记得把硬件访问断点删除

开始找ecx的值哪来的,下图ecx的值看着来自于下图红框位置

但是它上一行是一个跳转指令,如下图可能会不执行上图红框里的代码

然后通过下断点,可以确定ecx的值不来自于,mov ecx,dword ptr[ecx]这一行,它来自于上面,所以接下来往上翻看看还有什么位置给ecx赋值了

然后下图断点位置是一个je跳转指令,可以看出它并没有跳转

所以位置ecx还进行了加0x2C,现在的公式[[[ebx+0x148]+0x10]+0x2C]

然后最终看到ecx来自于edx,edx又来自于[eax+0x10],eax来自于[ebx+148],ebx来自于ecx,ecx来自于上一层,所以接下来通过硬件访问到断点CTRL+F9

首先在内存窗口中回到使用CE找到的那个地址,如下图红框

然后硬件访问断点,断点住,记得删除硬件断点,然后按CTRL+F9就来到下图位置

CTRL+F9发现跳出了Game模块,来到了一个递归循环(下图位置会不断的运行)

然后再回到npcm111这个位置,测试一下公式 [[[ebx+0x148]+0x10]+0x2C],首先在下图红框位置打断点

然后使用 dd [[ecx+0x148]+0x10]+0x2C,如下图虽然现实不全但它确实是一个名字

然后它也有的位置是0,没有名字

还有乱名字不知道是什么,等后面用C++在看,乱码是OD的问题

现在确定了[[ecx+0x148]+0x10]+0x2C 是名字,然后接下来再找ecx的基址,如下图ecx的值来自于esi,ecx的基址找不到,下图红框位置是函数的头部,在下图红框位置使用[[esi+0x148]+0x10]+0x2C公式得到的结果永远都是当前角色的名字


在下图红框位置打断点可以得到当前角色名字和附近npc的名字,基址找不到,这次就算完了

然后是跳出递归循环的方法

首先来到递归循环,递归循环的特点就是会多次执行一样的代码,如下图来到会被多次执行的递归代码里

栈里会有返回到,如下图红框,通过返回到来跳出递归循环

右击选择反汇编窗口跟随,返回之前记得取消断点

然后就会来到下图位置,然后在下图红框位置打断点,继续看它的返回到,

继续返回到

然后回来到下图位置,然后继续返回到

然后回来到下图位置,下图位置就不会被重复执行了,这就算是跳出了循环,下图里的基址没法用,它们的数据很乱不好用,然后下一次通过其它方式去找附近npc


相关推荐
美酒没故事°6 小时前
Open WebUI安装指南。搭建自己的自托管 AI 平台
人工智能·windows·ai
一个欠登儿程序员8 小时前
在国产服务器上通过 Docker 部署 Windows 虚拟机
服务器·windows·docker
爱宇阳9 小时前
WSL2 隔离 Windows PATH 实战指南
windows·环境变量
ALex_zry9 小时前
C++模板元编程实战技巧
网络·c++·windows
I疯子9 小时前
2026-04-08 打卡第 5 天
开发语言·windows·python
一个人旅程~10 小时前
旧笔记本电脑安装win10精简版LTSB&win10LTSC&linuxmint作为三系统的操作指导书(以DELL n4020为例)
linux·windows·经验分享·电脑
开开心心就好10 小时前
支持自定义名单的实用随机抽签工具
windows·计算机视觉·计算机外设·excel·散列表·启发式算法·csdn开发云
dyj09511 小时前
OpenClaw小龙虾本地部署【Windows系统 + 接入飞书】
windows·飞书
CresCent_Charles11 小时前
(已解决)踩坑记录:Windows 11安装pointops编译时报错
windows
skywalk816312 小时前
Windows下安装编译安装Whisper-CPP:一个语音实现框架集和高性能推理模型
人工智能·windows·whisper