前言

本人在网络上看到一些视频,学习写作而成。代码仅供学习参考,切勿作为商业用途。虽然没人会用我这么low的代码

主要思路

这种简单的修改器也就是对于内存的读写就可以了,而且PVZ(植物大战僵尸)这个单机游戏没做反外挂,内存基址始终不变。经个人几个电脑实验,只要是同一版本的PVZ其基址都相同。

可能会用到的工具

Visual studio :可自行找度娘安装教程

Cheat Engine:也可自己找度娘安装,若是觉得网上不安全有病毒,可以下载本人找到的资源:百度网盘–Cheat Engine 7.0,提取码:m0iz

植物大战僵尸:可自行网络下载,或者本人找到的资源:百度网盘 --PVZ中文年度版,提取码:32yh

基址获取

1.用CE(Cheat Engine) 去自己寻找,过程也非常有趣,推荐教程(非本人所写,读者也可自行百度)。

2.本人所用版本的基址:

请认准窗口名称:Plants vs. Zombies 1.2.0.1073 RELEASE

以下均为16进制
基址: 007794f8
阳光:+868+5578 (两次偏移)
金钱: +950+50 (两次偏移)

3.如果不是本人版本的PVZ,那么可以自行百度。

以下为本人找的基址大全的一篇博客:植物大战僵尸 基址大全
真实性与正确性,本人未曾一一验证。

PS:读者在c++中使用时请将16进制下的地址转换为10进制,如本人程序所写

// plantwg.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。#include "pch.h"
#include <iostream>
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>//主菜单
void MainMenu()
{printf("-----歪瓜选项------\n");printf("    1.修改阳光\n");printf("    2.修改金币\n");printf("    3.退出\n");printf("---created by wjl---\n");
}//修改阳光
void ModifySun()
{//根据窗口名字获取窗口句柄HWND hgame = ::FindWindow(NULL, "Plants vs. Zombies 1.2.0.1073 RELEASE");//得到线程或者进程idDWORD ProcessId;::GetWindowThreadProcessId(hgame, &ProcessId);//根据id得到进程句柄HANDLE hProcess = ::OpenProcess(PROCESS_ALL_ACCESS, false, ProcessId);//内存基址LPVOID pBase = (LPVOID)7836920;//十六进制7794F8转换为10进制int sun = 0;LPVOID rbuffer = (LPVOID)&sun;//传出参数DWORD byred;::ReadProcessMemory(hProcess, pBase, rbuffer, 4, &byred);pBase = (LPVOID)(sun + 2152);//十六进制868转换为10进制::ReadProcessMemory(hProcess, pBase, rbuffer, 4, &byred);pBase = (LPVOID)(sun + 21880);//十六进制5578转换为10进制::ReadProcessMemory(hProcess, pBase, rbuffer, 4, &byred);printf("当前阳光值:%d \n", sun);int wsun = 0;printf("请输入阳光的修改值\n");scanf("%d", &wsun);LPVOID wbuf = (LPVOID)&wsun;DWORD by;::WriteProcessMemory(hProcess,(LPVOID)pBase,wbuf,4,&by);printf("修改阳光成功!\n");
}//修改金币
void ModifyMoney()
{//根据窗口名字获取窗口句柄HWND hgame = ::FindWindow(NULL, "Plants vs. Zombies 1.2.0.1073 RELEASE");//得到线程或者进程idDWORD ProcessId;::GetWindowThreadProcessId(hgame, &ProcessId);//根据id得到进程句柄HANDLE hProcess = ::OpenProcess(PROCESS_ALL_ACCESS, false, ProcessId);//内存基址LPVOID pBase = (LPVOID)7836920;//十六进制7794F8转换为10进制int money = 0;LPVOID rbuffer = (LPVOID)&money;//传出参数DWORD byred;::ReadProcessMemory(hProcess, pBase, rbuffer, 4, &byred);pBase = (LPVOID)(money + 2384);//十六进制868转换为10进制::ReadProcessMemory(hProcess, pBase, rbuffer, 4, &byred);pBase = (LPVOID)(money + 80);//十六进制5578转换为10进制::ReadProcessMemory(hProcess, pBase, rbuffer, 4, &byred);printf("当前金币值:%d \n", money);int wmoney = 0;printf("请输入金币的修改值\n");scanf("%d", &wmoney);LPVOID wbuf = (LPVOID)&wmoney;DWORD by;::WriteProcessMemory(hProcess, (LPVOID)pBase, wbuf, 4, &by);printf("修改金币成功!\n");
}int main()
{//根据窗口名字获取窗口句柄HWND hgame = ::FindWindow(NULL, "Plants vs. Zombies 1.2.0.1073 RELEASE");//得到窗口的具体信息RECT r;::GetWindowRect(hgame, &r);//printf("窗口信息:\n 左上角坐标:%d %d       右下角坐标: %d %d\n", r.left, r.top, r.right, r.bottom);//获得鼠标点击的位置POINT P;::GetCursorPos(&P);//printf("鼠标位置:%d %d\n", P.x, P.y);if (NULL == hgame){printf("请先运行游戏,后重新开启歪瓜!\n");Sleep(3000);return 0;}int op;while (1){MainMenu();scanf("%d",&op);switch (op){case 1:{ModifySun();break;}case 2:{ModifyMoney();break;}default: break;}if (op != 1 && op != 2){printf("感谢使用!\n");break;}}return 0;
}

欢迎指正和评论!

植物大战僵尸阳光金币修改器(外g)c++代码实现相关推荐

  1. 怎么修改植物大战僵尸{不是修改器修改}

    http://apps.hi.baidu.com/share/detail/20397333 现在介绍下植物大战僵尸的存档: 用户的存档被存放在userdata目录下的userX.dat中(以二进制的 ...

  2. 植物大战僵尸中文版和修改器下载以及出现fatal erro错误时如何解决

    植物大战僵尸中文版下载 下载链接](https://pvz.lanzoui.com/iau42bc) 下载后解压:(解压路径中不要有中文名) 不要直接点击.exe运行,这样会报fatal error错 ...

  3. 植物大战僵尸阳光值修改以及阳光基地址寻找详细步骤~包含排除不符合条件的地址的讲解,以及如何观察地址情况等

    针对"阳光值" 采用3种以上的方法扫描至少3关的"阳光值"的内存地址,并能修改 利用精确值进行扫描,并修改阳光值 (1)利用初始的精确值进行扫描 (2)随后种植 ...

  4. 植物大战僵尸-阳光数目修改及阳光基址

    最近由于课程需要,进行一次CE工具使用去破解游戏. 阳光是一个精确的值,因此需要用CE精确数值进行查找,首先阳光基础值为50,因此扫50 发现还有很多,因此种下一颗向日葵,使阳光数值变为0,将精确数值 ...

  5. ce修改植物大战僵尸阳光

    ce修改植物大战僵尸阳光 准备: CE修改器 植物大战僵尸游戏 易语言 选择进程,最重要的是找到阳光的基址 阳光数量为50 首次扫描和再次扫描 找到阳光的动态地址 找出是什么改写了这个地址,并双击 偏 ...

  6. 学习逆向知识之用于游戏外挂的实现.第二讲,快速寻找植物大战僵尸阳光基址.以及动态基址跟静态基址的区别...

    通过游戏外挂,学习逆向技术之快速寻找植物大战僵尸阳光基址.以及动态基址跟静态基址的区别 一丶静态基址. 动态基址. 基址的区别 通过上一讲超级马里奥的游戏外挂技术制作.我们学习到了静态基址.以及观看内 ...

  7. 植物大战僵尸阳光的无限掉落以及掉落冷却基地址寻找详细步骤~包含排除不符合条件的地址的讲解,以及如何观察地址情况等

    植物大战僵尸阳光的无限掉落以及掉落冷却基地址寻找 阳光的无限掉落冷却时间地址以及基地址寻找 (1)首先我们在第一个阳光掉落后,扫描未知的初始值 (2)阳光掉落后,此时掉落阳光的冷却倒计时一直在减少,所 ...

  8. 植物大战僵尸针对金币地址以及基地址寻找详细步骤~包含排除不符合条件的地址的讲解,以及如何观察地址情况等

    植物大战僵尸针对金币地址以及基地址寻找详细步骤 针对 "金币" 扫描金币的内存地址 (1)由于金币是一个精确的数值,且每次捡拾一个金币就会对应增加10,那么我们在扫描的时候就需要将 ...

  9. 植物大战僵尸用户存档修改(CSDN任务1,20210418)

    植物大战僵尸用户存档修改 任务目标 目标1:修改<植物⼤战僵⼫>的存档⽂件,能跳到指定关卡,例如「5-1」 目标2:修改<植物⼤战僵⼫>的存档⽂件,让游戏账户有指定数量的⾦币 ...

  10. vs c/c++ 用win32api写出植物大战僵尸的阳光值修改器

    一.工具如下: 1.植物大战僵尸1(直接下载逗游游戏盒可以直接下载,网上资源很乱) 2.vs2017(使用vs win32的接口) 3.cheat engine(附下载链接https://www.cr ...

最新文章

  1. 【leetcode】二叉树与经典问题
  2. 修完 Bug 后脑袋灵光一现 | 每日趣闻
  3. 2021年宝鸡中学高考成绩查询,宝鸡各高中2020年高考喜报成绩一览
  4. 京东连续亏损十几年,为什么却发展越来越大?
  5. python自动化构建工具_Python自动化构建工具scons使用入门笔记
  6. Modularity(模块化-AMD规范)
  7. RANSAC迭代估计
  8. (PDF格式论文加书签)Tampermonkey + 知网下载助手 + FreePic2Pdf
  9. Babylonjs 官网demo预览图合集整理 带说明
  10. 1岁到1岁半宝宝食谱
  11. 一键修改手机DNS的bat文件
  12. Python高级编程——13.垃圾回收机制
  13. 【NOIP 2018 提高组】填数游戏
  14. SessionFactory的用法
  15. oracle 设置 sga_max_size参数,Oracle教程之SGA_MAX_SIZE参数
  16. 2021-05-26 使用Android Studio创建手机模拟器
  17. 附件 计算机 丢失,Win10系统开始菜单中没有附件解决方法
  18. 把超星阅览器的文件转换为PDF文件
  19. linux python excel文件,Linux下用python处理excel
  20. postgres 使用

热门文章

  1. HTML_多媒体效果_embed标签详解
  2. c4d流体插件_C4D流体烟雾模拟插件TurbulenceFD C4D v1.0.1437支持R14R20
  3. 135编辑器使用教程
  4. elasticsearch6.4.3实现搜索同义词
  5. 懒惰的风纪委Elaine(宁波工程学院)
  6. 易经六十四卦详解白话文解释——易经64卦全解(下)
  7. Linux V4L2框架源码分析
  8. 1054 The Dominant Color(20 分)
  9. Url Rewrite Filter 3.2.0中文手册
  10. Flink SQL regular join 如何设置状态过期