游戏就不介绍了,所用工具为CE和OD,开始先上一张效果图。
二、思路
观察可知,植物每隔一段固定时间产出阳光,可能有计算产出阳光时间的处理程序,修改该处理程序可以更改阳光产出速度。
三、实现
假设阳光计时数据为0时植物产出阳光,产出阳光后计时数据变为最大(这里是假设,请不要问为什么)。CE附加游戏进程,种植一棵产出阳光植物,具体如下:
首次搜索未知初始值;
回到游戏,未产出阳光前搜索减少的数值;
产出阳光后立即搜一次增加的值;
重复2、3步骤。
得到结果如下图:
观察可知,地址栏中最后一条为计时数据地址。将该地址锁定为0,效果见下图:
(二)OD附加修改语句
到此,作为普通玩家可以收工了,但作为逆向小白,工作才刚刚开始。记下计时数据地址1DC807C0,关掉CE,打开OD(也可以先开OD附加游戏进程,再开CE,否则OD可能附加不了进程),数据窗口跟随计时数据地址1DC807C0,下硬件写入断点(也可下内存写入断点,至于优缺点一试便知),F9运行,回到游戏,断在下图处:
经分析,此处为递减计时数据语句,此时计时数据为3A,为了找出赋值计时数据的语句,手动修改计时数据为00,F9运行,回到游戏,断下(见下图)。
上图00483B00处为给计时数据赋值语句,再上一行的call跟进,查看eax来源。如下:
0053E053处为返回,上一行修改了eax值,此处将addeax,esi语句修改为xoreax,eax,或subeax,eax,注意不要覆盖返回语句即可。
四、小结
本人小白,仅以此文记录学习心得,仅做学习交流之用,不妥之处,恳请指正,祝论坛越办越好。
以上就是植物大战僵尸无冷却阳光-植物大战僵尸更改阳光产出速度的相关内容啦,关注ourplay资讯频道,小编助你成为植物大战僵尸大神!