植物大战僵尸游戏部分破解
【实验目的】
通过对电脑单机游戏植物大战僵尸的逆向分析、破解,进一步熟悉常用调试工具,如Ollydbg、cheatengine,同时能更熟练的掌握了调试中常用的方法和技巧。更加了解如何在工具中设置断点,帮助分析代码。
【实验要求】
一、完成基本调试工具的下载和使用。
二、使用调试工具对程序进行分析,找到程序关键代码
三、在ollydbg中修改程序关键代码或逻辑。具体完成以下两处主要破解:
【实验环境】
调试工具:OllyICE吾爱破解专版、CheatEnigine6.7
待破解程序:PlantsVsZombies.exe(植物大战僵尸年度旗舰版)
【实验过程】
一、改变阳光拾取值,步骤如下:
- 运行游戏PlantsVsZombies.exe并在OllyICE中附加进程PlantsVsZombies.exe。
- 在CheatEngine中附加游戏PlantsVsZombies.exe进程。
- 观察游戏,发现阳光初值为精确数值50,且拾取一次阳光时数值变为75,阳光拾取值为25
- 游戏刚开始时,阳光值为50,暂停游戏,立即在CE中首次扫描精确数值50
- 回到游戏,拾取一次阳光后,阳光值变为75,暂停游戏,在CE中再次扫描精确数值75
可知该地址的值4B即阳光值75
二、改变植物冷却时间步骤如下:
- 运行游戏PlantsVsZombies.exe并在OllyICE中附加进程PlantsVsZombies.exe。
- 在CheatEngine中附加游戏PlantsVsZombies.exe进程。
- 观察游戏,发现植物冷却时间不同,此时待所有植物冷却完毕后,为了更好的寻找存放冷却间隔时间的内存地址,考虑先选择单一植物实验,通过选定植物冷却间隔时间值的变化,找到该植物的冷却时间内存地址
- 首先猜测冷却时间是个倒计时计时器,即当冷却间隔时间越小,植物越接近冷却完,当时间间隔为0时冷却刚好完毕,当再次种下该植物时,间隔时间最大。通过后续实验发现,在CE中找不到这样的数值,故猜测错误,结果相反。即冷却时间间隔是正向计时的,冷却时间间隔是从0不断增大至最大值,当冷却间隔值为0时,表示刚种下该植物;当冷却间隔值为最大时冷却刚好完毕。
- 当游戏中所有植物冷却完毕后,种下选定的植物后,立即暂停游戏,在CE中首次扫描未知的初始值。
- 回到游戏,继续游戏进程后立即暂停游戏,回到CE中再次扫描增加的数值。
- 在该植物冷却完成前,不断重复该步骤若干次后,在CE中只有少量内存地址,观察数值可得到存放该植物冷却间隔时间的内存地址为,保存该地址到记事本
【实验结果】
- 将添加的太阳值改成了256,初始太阳值为50,拾取了一个阳光后为306。
- 种下一个卷心菜后,植物没有进入冷却,还可继续使用。
【实验小结】
通过对软件逆向的初步接触和学习就对曾经的热门游戏植物大战僵尸进行了破解并且获得了成功获得了很大的成就感,激发了对软件逆向技术的更进一步的学习和探索。这次的实验也只是改了简单的两处,同样还能再对植物的属性,僵尸的属性,太阳的属性等等进行修改。更多,更深入的修改就等待以后更深广的学习吧!
文章来源: 植物大战僵尸游戏部分破解