- 首先我们使用CE,导入植物大战僵尸。我所利用的模式就是“宝石迷阵”这个娱乐模式。
图 1.1 导入游戏进程
图 1.2 宝石迷阵 - 我们需要找调用CALL的来源。我们搜索下面的程序的完成数。随后进行一次消除使数字增加从而进行再次搜索。我们使用该方法多次扫描,直到确认结果值地址。
图 1.3 完成数
图 1.4 增加一次结果
图 1.5 首次扫描结果
图 1.6 再次扫描结果
图 1.7 结果值地址
图 1.8 汇编指令
- 接下来把得到的地址放进OD里面,下断点分析查看该结果值的访问信息。
图 1.9 OD中设置断点
图 1.10 在OD中附加进程
图 1.11 OD附加后界面 - 进入游戏再消除一个以后,观察调用,发现了调用列表使用第一个进行尝试,在第一个显示位置下断点。随后进入游戏再次消除一个,返回OD进入断点处查看返回值。
图 1.12 在调用处下断点
图 1.13 返回值为14h - 根据返回值,我们判断参数有5个,我们在返回到CALL 在push 0x1下个点F8往下走,分析参数。
图 1.14 分析参数 - 可见,ebx是x坐标,esi是y坐标而ecx中存着基址。参数已经分析完毕。测试该call是不是我们所需要的,现在我们的进度是7个。调用一次call,查看进度有无改变。
图 1.15 当前进程
图 1.16 编写call
- 发现call调用后,进度增加了,并且返回“执行成功”。紧接着,我们开始分析静态地址
图 1.17 call调用成功
图 1.18 分析静态地址
图 1.19 查找地址
图 1.20 基址
- 我们随便打开一个其他模式根据基址修改call的代码。
图 1.21 更改代码
图 1.22 游戏界面
图 1.23 成功界面 - 发现无论什么模式,都调用100次call就可以通关了,至此随意过关破解完成。