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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值