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

一.效果

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

二.思路

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

三.实现

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

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

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

 

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

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

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

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

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

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

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

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

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

上OD!

(3)获得植物call。

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

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

 

第一处

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

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

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

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

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

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

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

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

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

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

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

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

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

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

我先种植了一个豌豆 ,然后用代码种植了一个豌豆 在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

 

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