游戏辅助制作核心--植物大战僵尸逆向之召唤僵尸call(九)

一.效果

游戏辅助制作核心--植物大战僵尸逆向之召唤僵尸call(九)_第1张图片

二.思路

我们通过在场上的僵尸的数量来定位记录僵尸数量的一个地址,因为召唤僵尸或者结束战场肯定是需要这个变量来进行判断的,由此就可以定位到召唤僵尸call

三.实现

(1)获得僵尸数量的地址.

首先搜索未知的值,然后等待僵尸出现搜索增加的值,僵尸死了 可以搜索减少的值,如果数量没有变化,可以搜索未变动的值。然后几番搜索完成之后会出现和我这个图差不多的

游戏辅助制作核心--植物大战僵尸逆向之召唤僵尸call(九)_第2张图片

会有很多相似的 当场上的僵尸有3个的时候 0f2ecab8显示为3 此时我们选择这个地址 右键是谁修改了这个值

这个时候等一会 不要急 一定要等有僵尸出来以后变动的值才是 不然就去错地方了

游戏辅助制作核心--植物大战僵尸逆向之召唤僵尸call(九)_第3张图片

像这样 再最右上方出现了一个僵尸 这个时候 出现了一个地址 那么这个地址 应该就和召唤僵尸的call离的不远

(2)获得召唤僵尸call.

游戏辅助制作核心--植物大战僵尸逆向之召唤僵尸call(九)_第4张图片

来到这里 可以看到esi+0x10就是计算在场有多少僵尸的地址

如果按照正常逻辑来说 在这里应该不会有调用函数 因为这里是计数的 那么这个函数内部可能就只是计数而已

我们直接返回到上一层去看看

游戏辅助制作核心--植物大战僵尸逆向之召唤僵尸call(九)_第5张图片

出来之后 看到下面就有一个函数 非常像 于是我试了一下

但是发现几个问题 里面有几个参数对不上 比如那个ebx 就一直在加 我怀疑应该是在场的僵尸数量 而ecx压根不知道是什么东西 虽然其他的值都是可以知道的 而且上下看了下 几乎都是同一个函数地址 那么我们继续向上 执行到返回

游戏辅助制作核心--植物大战僵尸逆向之召唤僵尸call(九)_第6张图片

然后来到这里 发现 这里有2个参数 和一个值 其实很想调用call

如果召唤僵尸 肯定需要几个参数

1.y坐标

2.僵尸的类型

3.僵尸的对象

而这个函数正好满足我们所以的要求

我们来分析一下这个参数

游戏辅助制作核心--植物大战僵尸逆向之召唤僵尸call(九)_第7张图片

我们刚在这里下断就发现被断下了 一开始肯定是不知道参数的

他压入两个参数 0 1 eax看了一下 好像是怪物的对象

然后我们放行 进游戏看看 他到底哪一行出来的僵尸 这样就可以判断 那个参数是坐标了

游戏辅助制作核心--植物大战僵尸逆向之召唤僵尸call(九)_第8张图片

我们发现 他是第2行出来的 也就是说 传入的参数是1 这样就确定了 传入的eax就是坐标

游戏辅助制作核心--植物大战僵尸逆向之召唤僵尸call(九)_第9张图片

当我们再次断下的时候发现传入的参数是 0 4 我们知道 这个4应该是坐标 那么这个0 也会是坐标吗 我们改一下看看

给他改成1 0

游戏辅助制作核心--植物大战僵尸逆向之召唤僵尸call(九)_第10张图片

我们发现 在第一行出来一个带小旗子的僵尸

那么由此可以断定 这个esi是僵尸的类型 根据数字判断会出现不同的僵尸

(3)测试召唤僵尸call

在测试之前 最好先搜一下edi的基质 具体实现 就不多说了 大家应该都知道了 反正就是那个逻辑 传入的edi就是他最后的值 只要用ce搜几下很快就出来了

我这里就直接发基质了

6a9f38 + 768

我们就先在第一行召唤10个僵尸吧 都是带小旗子的这种吧

游戏辅助制作核心--植物大战僵尸逆向之召唤僵尸call(九)_第11张图片

四.总结

至于如果想让僵尸只走一条线 那也很容易 只要修改y坐标就可以 ,如果只让他出光头僵尸。反正参数知道什么意思了 想怎么改都行

 

 

 

你可能感兴趣的:(游戏逆向)