Plants vs Zombies 阳光修改器

  之前在腾讯游戏安全实验室的公众号上看到了一篇关于植物大战僵尸部分功能逻辑的分析,觉得很不错,看了文章后对相关功能数据修改的过程也比较清晰,萌生出了想要动手编写一个阳光修改器的程序的想法。

首先明确一下大致的需求

  • 之前学习过 C 语言,对控制台编程比较熟悉,这次想尝试用图形化编程编写
  • 程序主要功能修改阳光值,分为打开进程和修改两步完成

这里主要结合汇编代码分析该程序逻辑的编写(相关OllyDbg调试图片借用腾讯云社区 IBinary 文章,链接已附在文末,对一个只会 OD ,IDA 最最最基础操作的 Web 狗来说,调试真的太难了 QAQ~ )

根据 CE 查找出的阳光地址,在 OD 设置内存访问断点,可以查找出修改该地址的汇编指令,看到是访问 edx 寄存器加上 5560 偏移地址得到

此时 edx 地址为

同样对 edx 寄存器地址下断点,最终可以得到以下代码(详细调试过程可以参见文末文章),edx 寄存器值是访问 ESI 寄存器地址加上 768 偏移得到的,这是一个二级指针

此时这个 ESI 寄存器刚好存储的是游戏基址,所以程序编写的大致思路就有了。获取游戏窗口句柄,获取进程句柄,访问基址内容(基址存储的是二级指针,可通过CE查找到),加上第一个偏移 868 得到一级指针地址,访问一级指针内容,再加上第二个偏移 5578 得到阳光地址,修改地址值程序结束。(这里的两个偏移 868 和 5578 是我测试时得到的值)

对比了多款 C++ 下图形化编程库,选择了 MFC来编写,鸡啄米的相关教程还不错,起初觉得 MFC 编程会很复杂,用 vs 编写确实感觉简单很多,最主要的其实就是相关函数的编写。

修改成功

最后附上全世界最大同性交友平台地址,欢迎一起来 van 呀~
jlkl-Plants_vs_Zombies阳光修改器

参考链接:
OllyDbg逆向植物大战僵尸
植物大战僵尸作弊器源代码(MFC版)
C语言制作植物大战僵尸无限阳光修改器

声明:此博文内容仅供学习交流,如作他用所承受的法律责任一概与作者无关