植物大战僵尸免费种植分析

首先先找到当前阳光的地址

1

然后扫描什么访问了当前地址,种植豌豆射手,多出两个数据

1

分析这其中一个数据

1

OD跟一下,并注释

1

在这段代码的CALL头下个断

1

然后回到游戏种植豌豆射手,程序断了下来,回到OD,发现寄存器EAX编程64,转为十进制也就是100,刚好是豌豆射手的价格,只要弄清这个EAX的64是怎样来的,然后修改这个值,就可以达到免费种植植物

1

跟随反汇编窗口

1

然后在这里下断,发现在种植植物后,EAX的值为64,也就是说,在这个断之前就已经定义好豌豆射手的价格,并将它放在了一个常亮,经过代码把这个值放到了EAX,猜测在CALL 4EDAE0将值转到了EAX,于是在这个CALL前下个断,种植豌豆射手,发现EAX为0,由此断定,EAX的值实在CALL 4EDAE8中传过来的。

1

1

跟进CALL,单步执行过这个CALL时,EAX变成了100,那么我们跟进这个CALL,并注释

1

单步执行过这里时,EAX变成了100,由此可以断定,这句代码为关键代码处,注释。

1

这句关键代码处,意思是将EAX*4然后加上69F2C0这个地址的值,执行这句代码之前,EAX为0,0乘4等于0,加上69F2C0等于64,由此我猜测69F2C0地址的值为64,十进制也就等于100

1

不出所料,正是100。修改一下

1

用了同样的办法找了下向日葵的

1

发现在执行关键代码的上一句时,EAX的值为9,然后EAX乘4加上69F2C0,9乘4等于36,转化为十进制为24,猜测69F2C0加上24就应该等于50

1

1

由上述分析,可得樱桃炸弹的价格

1


总结:经过这次分析,学到了不少,在分析过程中应该时刻留意CALL的返回,并逻辑判断是否在这个CALL执行了什么样的程序。