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

19.第二阶段x86游戏实战2-寻找寻路call

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

本次游戏没法给

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

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

工具下载:

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

提取码:6tw3

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

上一个内容:18.第二阶段x86游戏实战2-探索释放技能call

上一个内容中找到了,释放技能调用的函数,本次找一下寻路调用的函数

下方采用通过发送数据包的位置找寻路,找寻路的方式还有通过人物状态,之前走路的状态是2,站着不动的状态是0,打坐的状态是6可以跟踪这些状态的写入去追,然后还可以通过人物基址去追

坐标的特征:十六进制以4开头或以C开头的一般就是坐标,看多了也就能认识了

先说这个游戏通过发送数据包的位置追寻路追不到,因为它使用了循环,它通过修改状态来实现走路,意思是0表示不走路,1表示走路,一个线程专门写走路,一个线程专门读取是否走路执行走路逻辑

然后开始验证上面写的字,打开游戏,打开OD,并使用OD附加到游戏

首先来到发送数据包的位置

还是鼠标单击下图红框位置,然后鼠标移动到游戏中准备触发走路,然后按F2紧接着用鼠标触发走路

断下来之后双击取消断点

按CTRL+F9之后

按CTRL+F9之后

按CTRL+F9之后

按CTRL+F9之后

按CTRL+F9之后,来到非游戏模块(非Game模块)

按CTRL+F9之后,又会来到Game模块

按CTRL+F9之后又会来到非Game模块,这是一个递归循环(不知道递归循环什么意思没事,就是一个循环,递归是循环的一种,搞懂需要写C++代码,C++基础里的东西,后面有机会写一个递归循环一看就能懂)

然后继续老套路,来到zl3层,看看它是否除了走路会触发断点其它都不会触发,下图来到zl3层,对它打断点发现只有走路才能触发断点

然后来到zl4层,我们要找最外侧的那一个,所以还要往上找,所以来到zl4层,对zl4打断点发现它不走路也会断下来,所以zl3层是最外侧

然后来到zl3层,查看它的参数,ecx

然后按F8,执行call 0x25EFD0,发现栈没有变化,所以call 0x25EFD0没有参数(之前看参数是点进去看retn 后面跟不跟数字,通过数字判断函数有几个参数,本次是第二种看参数的方式,如果有参数栈一定会变的)

然后通过多次断点观察,ecx的值不变,这个值游戏重启了肯定会变,然后需要找ecx的值哪来的,需要找到它的基址,如下图ecx的值来自于esi,esi的值来自于ecx,ecx的值来自于上一层

通过断点CTRL+F9来到上一层,ecx来自于esi+0x154位置,esi的值还是来自于ecx,ecx又来自于上一层,所以继续断点CTRL+F9找

CTRL+F9之后就来到那个循环了,在循环里找ecx的值没法找,因为不知道这个循环要循环几次才能出去,能找到也是运气好,所以这样找不现实,需要换个方式找

然后再回到zl3,现在怎么办?往上是循环没法找ecx的值,这时候怎么办?不信没法找的自己去试试一找一个不知声,这里补充一点,当前坐标和目的地坐标在zl2附近可以看到取值

现在有一个问题,现在在一个循环里,为什么zl4会不断的执行,上图zl3位置只有走路的时候才执行?然后在zl3函数头部打断点,会发现zl3头部也是会不断的断下来

然后在zl3断点住之后通过按F8,看看是为什么zl3位置不走路不执行,然后会发现下图两个红框位置,它通过对比esi+0x130位置的值与0做比较je指令是相等就跳转,这里注意马上就要验证刚开始写的东西了

通过CTRL+F9往上找发现上面是循环,并没有给esi+130位置赋值的代码,esi+130位置的值是从别的地方来的(肯定不是从循环里来的)跳出循环的方式,在下图红框位置下硬件写入断点

单字节的硬件写入

然后它就跳转到了新的地方

记录偏移0xBEFBB

本次到这就结束了,下次接着上图位置继续,这里补充一个东西,如果没有下图红框的东西

它就在调试-》硬件断点里打开

删除硬件断点

这里提一点,当前坐标和目的地坐标在zl2附近可以看到取值,如下图,从ebp来的,这里还是不好搞,最好的call应该是给它一个目的地坐标就可以


img


http://www.kler.cn/a/331284.html

相关文章:

  • 移动0 - 简单
  • [bug] StarRocks borker load意向之外的bug
  • 第二十四天 循环神经网络(RNN)LSTM与GRU
  • spring学习(spring-DI(setter注入、构造器注入、自动装配方式))
  • 电脑丢失dll文件一键修复的多种方法分析,电脑故障修复攻略
  • 周末总结(2024/12/21)
  • QT学习笔记1(QT和QT creator介绍)
  • ClickHouse 的 MergeTree 引擎有哪些性能优势?
  • Mybatis 学习之 分页实现
  • 在Ubuntu 20.04中安装CARLA
  • VMware ESXi 8.0U3b macOS Unlocker OEM BIOS 2.7 Dell HPE 定制版 9 月更新发布
  • 物流行业中的AI平台架构与智能化应用
  • 【计算机基础理论】图灵机(Turing Machine)
  • 以企业的视角进行大学生招聘
  • IT新秀系列:Go语言的兴起
  • 什么是 JWT?它是如何工作的?
  • jmeter学习(1)线程组与发送请求
  • 15分钟学 Python 第34天 :小项目-个人博客网站
  • 【H2O2|全栈】关于CSS(9)CSS3扩充了哪些新鲜的东西?(二)
  • 一个基本的包括爬虫、数据存储和前端展示框架0
  • 【Android 14源码分析】WMS-窗口显示-第二步:relayoutWindow -1
  • MISC - 第11天(练习)
  • unity3D雨雪等粒子特效不穿透房屋效果实现(粒子不穿透模型)
  • 在一个克隆的仓库中设置远程仓库并同步最新的更改
  • SpringBoot实现的师生健康信息管理平台
  • [Docker学习笔记]Docker的原理Docker常见命令