当前位置: 首页 > article >正文

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公式得到的结果永远都是当前角色的名字

image-20241011200834463

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

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

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

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

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

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

继续返回到

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

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


img


http://www.kler.cn/news/354147.html

相关文章:

  • Unity3D Shader预热生成详解
  • Vue 之 插件与组件的区别
  • appium启动hbuild打包的apk异常解决
  • Raid盘类型及其特点
  • Flask框架@app.route中的路径及其视图函数
  • 如何有效参与机器人顶会?——周易教授PRE-IROS 2024分享
  • 【数据分析】影响系数 =(今日量-昨日量)/(今日总量-昨日总量)
  • git 操作暂存区命令用法大全
  • ChatGPT 现已登陆 Windows 平台
  • html和css实现页面
  • 文件加密技术解析:守护敏感信息的第一道防线
  • 技术分享:A-23OH型树脂在汽车涂装废溶剂回收中的应用
  • YOLOv11改进策略【卷积层】| SPD-Conv 针对小目标和低分辨率图像的检测任务
  • Django一分钟:DRF中序列化器字段source参数的作用
  • H5对接海康硬盘录像机视频简单说明
  • mac git管理(新)
  • 【前端】Matter:物体的高级控制
  • selenium获取cookie的方法
  • T3矩阵看功率
  • 深度探讨Java中String和StringBuilder