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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33958297/article/details/82717402

一.效果

二.思路

使用鼠标点击时会在一个地址写入一个值,当换一个植物会换一个值,这样如此反复就会找到这个地址,当种植的时候肯定要访问这个地址,这样就可以精确的定位到种植call了

三.实现

(1)搜索地址. 这个不是特别好截图 照着文字做 效果一样

首先搜索未知的值,进入游戏选择一个植物,但是不要种,点击改变的值搜索。可以回到游戏再换一个植物,再点击改变的植物。也可以回头游戏什么都不做,搜索未变动的值 如此反复就可以搜索出来 如下图

这是未选择植物的时候 出来的值 我们进去随便选择一个植物

 

可以看到 最下方的两个值 变了

其实多换几个植物 大致能看明白这两个值大致的意思 上面的是植物栏的索引 下面的应该是植物的ID

但是最好还是两个都试下比较好。

(2)获得植物种植的代码.

我们前面的思路中说了 当植物被种下的时候 会访问这个变量地址,所以我们只需要下访问断点,用CE就是选择是谁访问了这个地址。我这里对最有一个地址进行操作

当我们在游戏中种植植物以后会发现最下方多出来两个地址 这两个地址应该就是跟种植有关系的 我们记录下他的地址

上OD!

(3)获得植物call。

因为上图说了 是两个地址 ,所以最好的办法就是给这两个地方都下断,看看种植以后 哪里会被断下。

同时种植的时候 应该会满足几个条件,比如 肯定需要x,y坐标 植物对象等 不然他没法种,也就是说 他最起码得有3个参数 这个是最少的。

 

第一处

第二处 请无视这个注释 我前提分析过

上面两张图可以看到 第一张图其实一个参数都没有就进call了 就不符合我们种植的要求。

但是我也测试了 在前面几篇中有用的代码注入器 可以用代码注入器试一下就知道了。

我们直接来带第二张图 可以看到 他出入了4个参数 非常像我们要种植植物时所需要的

我们看一下参数 正好 其实对照这个图很明确了 都标注出来了 现在等于就是一个ebp的值不知道

那么我们可以猜想一下 他既然要种植 这个ebp 是不是很可能就是植物对象值 为了验证 我们从前面把植物对象的值拿出来试一下

附上 植物地址: [[[6a9f38]+768]+0xac]

最后我们发现 他并不是植物对象的值 而是植物对象里+4的位置的值

进游戏测试 上神器 代码注入器 我们在x=0,y=1的位置下一个植物

我先种植了一个豌豆 ,然后用代码种植了一个豌豆 在x = 0,y = 1的位置

这样就可以嗨喽 !!!!

四.总结

mov edi,dword ptr ds:[6a9f38]

mov edi,dword ptr ds:[edi+768]

mov edi,dword ptr ds:[edi+0xac]

mov edi,dword ptr ds:[edi+4]

push 0xFFFFFFFF

push 0xf //植物ID

mov eax,3 //y坐标

push 2 //x坐标

push edi

call 0040D120

 

猜你喜欢

转载自blog.csdn.net/qq_33958297/article/details/82717402