我个人觉得有时候要逆向分析一个游戏,除了需要有逆向,开发经验,还需要你对于游戏本身有足够的了解。游戏中透露的一些关键信息,敏感数,商品清单这种,本身都是一些重要信息。
这次简单来通过一个种植call,找一些功能。

这是种植call函数的段首,当我们在关卡中点击种植植物的时候,在这里会断下来,然后一大堆判断。
我们要分析的函数是0x40fdc6 这个函数。
先种下一颗向日葵,断下来了。

我们发现,这个函数的返回值影响了下面的跳转。
所以说到底我们就是改改跳转。看看有什么变化?
将跳转nop。

然后f9,我们发现向日葵神奇的变成了旗帜僵尸了。
表面上看,这个call就是用来计算控制你种下的植物还是僵尸相关。
但是我联想到了这个游戏本身的一个机制,我们都玩过 “我是僵尸” 这个模式,这个模式中,我们种下的本身就是僵尸。
为了验证猜想。
进入“我是僵尸” 模式

同样,种下的时候断下来,我们撤销指令。发现跳转不跳了,又进一步验证了猜想,这个函数是当种植的时候针对于关卡的一个计算,检测你关卡类型的。
针对你关卡类型不同。
我们像正常模式一样,让他跳转呢?改成jmp

我们发现种下的僵尸

神奇的变成植物了。
以上就是我说的。
[培训]Windows内核深度攻防:从Hook技术到Rootkit实战!