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 ptrecx这一行,它来自于上面,所以接下来往上翻看看还有什么位置给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


相关推荐
云计算练习生43 分钟前
什么是内核?操作系统内核到底管哪些事
linux·windows·操作系统·内核·shell
步行cgn3 小时前
Spring 注入 List 集合详解
windows·spring·list
云泽8084 小时前
从零搭建 WSL2 + Ubuntu C/C++ 开发环境:原理、实践与底层架构解析
linux·c++·windows·ubuntu·wsl2
YCOSA202513 小时前
雨晨 Windows 10 企业版 LTSC x64 中度精简 1809 迎双节 17763.9257 特别版
windows
sukalot13 小时前
windows 驱动实例分析系列: HidHide 驱动分析 - drivers 篇(四)
windows·驱动开发
ι:18 小时前
NUC12 Pro 安装 Ubuntu 24.04 LTS 详细教程
linux·windows·ubuntu·nuc
YCOSA202519 小时前
微软宣布将于10月7日举行Windows与Surface发布会,聚焦“Windows、NVIDIA RTX Spark、Surface,以及更广泛PC生态”
windows
Source.Liu19 小时前
【A11】 labelprinter(Tauri 版)新建步骤
windows·rust
Punchline27820 小时前
解决 Windows 环境变量 Path 设置时提示“字符太长”的完整指南
windows·环境变量·path
chushiyunen21 小时前
claude code笔记(二)、claude桌面端(内网不好用)
windows