植物大战僵尸阳光金币修改器(外g)c++代码实现
前言
本人在网络上看到一些视频,学习写作而成。代码仅供学习参考,切勿作为商业用途。虽然没人会用我这么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++代码实现相关推荐
- 怎么修改植物大战僵尸{不是修改器修改}
http://apps.hi.baidu.com/share/detail/20397333 现在介绍下植物大战僵尸的存档: 用户的存档被存放在userdata目录下的userX.dat中(以二进制的 ...
- 植物大战僵尸中文版和修改器下载以及出现fatal erro错误时如何解决
植物大战僵尸中文版下载 下载链接](https://pvz.lanzoui.com/iau42bc) 下载后解压:(解压路径中不要有中文名) 不要直接点击.exe运行,这样会报fatal error错 ...
- 植物大战僵尸阳光值修改以及阳光基地址寻找详细步骤~包含排除不符合条件的地址的讲解,以及如何观察地址情况等
针对"阳光值" 采用3种以上的方法扫描至少3关的"阳光值"的内存地址,并能修改 利用精确值进行扫描,并修改阳光值 (1)利用初始的精确值进行扫描 (2)随后种植 ...
- 植物大战僵尸-阳光数目修改及阳光基址
最近由于课程需要,进行一次CE工具使用去破解游戏. 阳光是一个精确的值,因此需要用CE精确数值进行查找,首先阳光基础值为50,因此扫50 发现还有很多,因此种下一颗向日葵,使阳光数值变为0,将精确数值 ...
- ce修改植物大战僵尸阳光
ce修改植物大战僵尸阳光 准备: CE修改器 植物大战僵尸游戏 易语言 选择进程,最重要的是找到阳光的基址 阳光数量为50 首次扫描和再次扫描 找到阳光的动态地址 找出是什么改写了这个地址,并双击 偏 ...
- 学习逆向知识之用于游戏外挂的实现.第二讲,快速寻找植物大战僵尸阳光基址.以及动态基址跟静态基址的区别...
通过游戏外挂,学习逆向技术之快速寻找植物大战僵尸阳光基址.以及动态基址跟静态基址的区别 一丶静态基址. 动态基址. 基址的区别 通过上一讲超级马里奥的游戏外挂技术制作.我们学习到了静态基址.以及观看内 ...
- 植物大战僵尸阳光的无限掉落以及掉落冷却基地址寻找详细步骤~包含排除不符合条件的地址的讲解,以及如何观察地址情况等
植物大战僵尸阳光的无限掉落以及掉落冷却基地址寻找 阳光的无限掉落冷却时间地址以及基地址寻找 (1)首先我们在第一个阳光掉落后,扫描未知的初始值 (2)阳光掉落后,此时掉落阳光的冷却倒计时一直在减少,所 ...
- 植物大战僵尸针对金币地址以及基地址寻找详细步骤~包含排除不符合条件的地址的讲解,以及如何观察地址情况等
植物大战僵尸针对金币地址以及基地址寻找详细步骤 针对 "金币" 扫描金币的内存地址 (1)由于金币是一个精确的数值,且每次捡拾一个金币就会对应增加10,那么我们在扫描的时候就需要将 ...
- 植物大战僵尸用户存档修改(CSDN任务1,20210418)
植物大战僵尸用户存档修改 任务目标 目标1:修改<植物⼤战僵⼫>的存档⽂件,能跳到指定关卡,例如「5-1」 目标2:修改<植物⼤战僵⼫>的存档⽂件,让游戏账户有指定数量的⾦币 ...
- vs c/c++ 用win32api写出植物大战僵尸的阳光值修改器
一.工具如下: 1.植物大战僵尸1(直接下载逗游游戏盒可以直接下载,网上资源很乱) 2.vs2017(使用vs win32的接口) 3.cheat engine(附下载链接https://www.cr ...
最新文章
- 【leetcode】二叉树与经典问题
- 修完 Bug 后脑袋灵光一现 | 每日趣闻
- 2021年宝鸡中学高考成绩查询,宝鸡各高中2020年高考喜报成绩一览
- 京东连续亏损十几年,为什么却发展越来越大?
- python自动化构建工具_Python自动化构建工具scons使用入门笔记
- Modularity(模块化-AMD规范)
- RANSAC迭代估计
- (PDF格式论文加书签)Tampermonkey + 知网下载助手 + FreePic2Pdf
- Babylonjs 官网demo预览图合集整理 带说明
- 1岁到1岁半宝宝食谱
- 一键修改手机DNS的bat文件
- Python高级编程——13.垃圾回收机制
- 【NOIP 2018 提高组】填数游戏
- SessionFactory的用法
- oracle 设置 sga_max_size参数,Oracle教程之SGA_MAX_SIZE参数
- 2021-05-26 使用Android Studio创建手机模拟器
- 附件 计算机 丢失,Win10系统开始菜单中没有附件解决方法
- 把超星阅览器的文件转换为PDF文件
- linux python excel文件,Linux下用python处理excel
- postgres 使用
热门文章
- HTML_多媒体效果_embed标签详解
- c4d流体插件_C4D流体烟雾模拟插件TurbulenceFD C4D v1.0.1437支持R14R20
- 135编辑器使用教程
- elasticsearch6.4.3实现搜索同义词
- 懒惰的风纪委Elaine(宁波工程学院)
- 易经六十四卦详解白话文解释——易经64卦全解(下)
- Linux V4L2框架源码分析
- 1054 The Dominant Color(20 分)
- Url Rewrite Filter 3.2.0中文手册
- Flink SQL regular join 如何设置状态过期