植物大战僵尸7_修改器制作
本教程基于 Qt 框架开发,通过调用 Windows API 对《植物大战僵尸》游戏内存进行读写,实现游戏数据的实时修改与注入。
本项目适合学习游戏修改器原理、Qt 界面编程与内存读写基础。
一、项目文件结构说明
| 文件名 | 功能说明 |
|---|---|
widget.h | 修改器主窗口类声明,变量与槽函数定义 |
widget.cpp | 修改器逻辑实现,内存操作、按钮逻辑 |
widget.ui | Qt Designer 生成的图形界面布局文件 |
二、支持的功能一览
| 功能项 | 描述 |
|---|---|
| 阳光修改 | 直接设置任意阳光值并锁定 |
| 金币修改 | 设置任意金币数值(内部值为显示值 / 10) |
| 冷却时间清零 | 所有植物卡片冷却时间立即刷新 |
| 大嘴花无敌 | 修改特定内存字节实现攻击无效 |
| 基础僵尸弱化 | 设置基础僵尸血量为 0,直接消失 |
| 铁桶僵尸弱化 | 修改防具僵尸伤害判断逻辑 |
| 高坚果增强 | 注入自定义汇编逻辑,改变行为或血量等 |
三、关键功能详解
1. 修改阳光数值
地址说明:
-
静态基址:
0x006A9EC0 -
一级偏移:
0x768 -
二级偏移:
0x5560
逻辑代码:
WriteProcessMemory(hProcess, (LPVOID)(SunShineOffsetFirstValue + SunShineOffsetSecond), &IntNum, sizeof(DWORD), &dwSize);
功能效果:
-
设置阳光数值,实时生效
-
配合复选框可实现持续锁定
2. 修改金币数值
地址说明:
-
静态基址:
0x006A9EC0 -
一级偏移:
0x82C -
二级偏移:
0x28
注意:
-
内部金币值为显示金币数 / 10
逻辑代码:
IntNum = QStrnum.toInt() / 10; WriteProcessMemory(hProcess, (LPVOID)(GoldCoinOffsetFirstValue + GoldCoinOffsetSecond), &IntNum, sizeof(DWORD), &dwSize);
3. 冷却时间清零
原理说明:
-
每个植物卡槽有一个冷却字段,按编号遍历 14 个卡片位置,依次写入冷却值为 1(单位:帧)
地址说明:
-
基址:
0x006A9EC0 → 0x768 → 0x144 -
每个植物偏移递增:
CDOffsetThird + i * CDAccumulator(即:0x70 + i * 0x50)
逻辑代码:
for(int i=0; i<14; i++) {
WriteProcessMemory(hProcess, (LPVOID)(CDOffsetSecondValue + (CDOffsetThird + CDAccumulator*i)), &IntNum, sizeof(DWORD), &dwSize);
}
4. 大嘴花无敌状态切换
地址: 0x00461551
原理:
-
修改该地址的字节,使大嘴花攻击后不进入冷却或保持战斗状态
字节值说明:
-
正常:
A0 0F(冷却 400 帧) -
无敌:
00 00(立即可用)
5. 基础僵尸血量修改
地址: 0x005227BB(偏移 +6)
逻辑说明:
-
写入值
0x00000000:直接消失 -
恢复为
0x0000010E:恢复原始血量
代码片段:
DWORD ChangeNum = 0x00000000; WriteProcessMemory(hProcess, (LPVOID)(0x5227BB + 6), &ChangeNum, sizeof(DWORD), &dwSize);
6. 铁桶僵尸血量调整
地址: 0x00531044
字节替换:
-
弱化:
29 C9 -
默认:
29 C1
7. 高坚果注入汇编逻辑
目标地址: 0x52FCF0
步骤:
-
使用
VirtualAllocEx分配远程空间; -
写入汇编 shellcode;
-
修改
0x52FCF0指令跳转到新代码; -
实现原始功能注入或行为修改。
注入代码示例:
add [esi+40h], -4 add [esi+40h], +4 mov ecx, [esi+40h] jmp 52fcf7
四、UI 设计与信号槽绑定
| 控件 | 功能 |
|---|---|
| 输入框 LineEdit | 输入阳光/金币数值 |
| 按钮 PushButton | 写入数据 |
| 复选框 CheckBox | 控制是否持续锁定/修改植物属性 |
| 状态标签 QLabel | 显示是否找到游戏、当前数值 |
connect(ui->ModifypushButton, SIGNAL(clicked(bool)), this, SLOT(on_ModifypushButton_clicked()));
五、使用建议与注意事项
-
游戏需先运行,再启动修改器;
-
每次启动自动检测窗口与 PID,刷新状态。
六、总结
该项目涵盖了 Qt GUI 开发、Windows 进程控制、内存读写、汇编注入等关键知识点。
欢迎基于此项目继续拓展,实现更多个性化功能!
下载链接如下:
通过网盘分享的文件:pvs_modify_3.0.rar 链接: https://pan.baidu.com/s/1AW3r52OoXXailhitOJoVtw?pwd=fbux 提取码: fbux --来自百度网盘超级会员v4的分享
2万+

被折叠的 条评论
为什么被折叠?



