-
-
[分享]植物大战僵尸常规攻击僵尸的一些逆向分析思路
-
-
[分享]植物大战僵尸常规攻击僵尸的一些逆向分析思路
初学者练习,大佬们请一笑而过了。
继续拿植物来分析分析。
当我们使用常规攻击 ,飞行道具 或者 投掷物 攻击僵尸的时候,我们通过僵尸血量找到函数段首。

这个我相信大家都找到过。
然后我们这一篇章要分析的是函数上一层。
使用 ctrl f9 返回上一层

我们这一次要说的是这个函数的大致功能。
经过我的发现,游戏中的僵尸虽然说各有不同,但是可以分为几个种类。
简单说一下。
头盔防具类:




门防具类:我自己起的名字。



无防具僵尸类:只有肉体。





以上三类随便拿一些来举例子。
我在函数中发现了三种处理函数,分别是针对于门防具 , 头盔防具, 身体 的。
也就是说防具和身体是分开的,常规攻击的情况下。
暂时不讲复杂的,先讲豌豆这种飞行道具吧,比如说铁栅门能防豌豆,但是不能防投手,和穿透性蘑菇,暂且不研究。

两个关键跳转,分别是针对于两个函数的跳过,
第一个是 对于防具门掉血的计算 和一些后续处理,
第二个是针对于防具头盔的计算和后续处理。
当我们豌豆类型的子弹攻击僵尸的时候,会分辨出僵尸类型。
如果是攻击的是门防具僵尸,防具还在,上卖跳转永远不会执行,会处理门的掉血计算。
如果是头盔防具僵尸,头盔还在,相反跳转逻辑。
当我们防具被攻击掉落以后,两个跳转都会跳过,
从而执行最下面的call ,执行对于僵尸肉体的掉血计算还有一些后续处理。
有人说雪橇车,投石车,包括僵尸博士,这种不是都有防具的吗?
但是他们确实是一次性僵尸,只有一个肉体,雪橇车投石车被打爆,僵尸也会直接死亡。
三个call中还有专门的处理,暂且不延伸,暂时先说这么多。
[培训]Windows内核深度攻防:从Hook技术到Rootkit实战!