原理介绍:先用CE分析出特征码(不讲),然后利用上次博客分享的C++特征码遍历的方式查询到特征码对应的地址。

然后进行简单的读写地址操作来实现  ①植物不死


①植物不死 

自己CE先找到坚强果血量,这个简单(就是根据僵尸咬植物进行血量减少的判断)就不讲了。

然后查看是什么改写了这个地址,然后调试追踪到这里

记录此处的特征码 83 46 40 FC 8B 4E 40 C7 86 B4

上代码

#include <stdio.h>
#include <windows.h>
#include <iostream>
using namespace std;
//参数分别为:进程句柄、特征码、偏移、读取长度、开始扫描位地置、扫描结束位置
uintptr_t hanshu_dizhi; //记录特征码对应的地址
uintptr_t ScanAddress(HANDLE process, char *markCode, int nOffset, unsigned long dwReadLen = 4, uintptr_t StartAddr = 0x400000, uintptr_t EndAddr = 0x7FFFFFFF, int InstructionLen = 0)
{//************处理特征码,转化成字节*****************if (strlen(markCode) % 2 != 0) return 0;//特征码长度int len = strlen(markCode) / 2;  //获取代码的字节数//将特征码转换成byte型 保存在m_code 中BYTE *m_code = new BYTE[len];for (int i = 0; i < len; i++){//定义可容纳单个字符的一种基本数据类型。char c[] = { markCode[i * 2], markCode[i * 2 + 1], '\0' };//将参数nptr字符串根据参数base来转换成长整型数m_code[i] = (BYTE)::strtol(c, NULL, 16);}//每次读取游戏内存数目的大小const DWORD pageSize = 4096;//查找特征码//每页读取4096个字节BYTE *page = new BYTE[pageSize];uintptr_t tmpAddr = StartAddr;//定义和特征码一样长度的标识int compare_one = 0;while (tmpAddr <= EndAddr){::ReadProcessMemory(process, (LPCVOID)tmpAddr, page, pageSize, 0); //读取0x400000的内存数据,保存在page,长度为pageSize//在该页中查找特征码for (int i = 0; i < pageSize; i++){if (m_code[0] == page[i])//有一个字节与特征码的第一个字节相同,则搜索{for (int j = 0; j<len - 1; j++){if (m_code[j + 1] == page[i + j + 1])//比较每一个字节的大小,不相同则退出{compare_one++;}else{compare_one = 0;break;}//如果下个对比的字节不相等,则退出,减少资源被利用}if ((compare_one + 1) == len){// 找到特征码处理//赋值时要给初始值,避免冲突uintptr_t dwAddr = tmpAddr + i + nOffset;uintptr_t ullRet = 0;::ReadProcessMemory(process, (void*)dwAddr, &ullRet, dwReadLen, 0);//cout<<dwAddr<<endl;//这里的dwAddr已经对应的是搜索到的地址//地址输出的也是10进制    需要转化为16进制 hanshu_dizhi=dwAddr;//记录地址if (InstructionLen){ullRet += dwAddr + dwReadLen;}return ullRet;}}}tmpAddr = tmpAddr + pageSize - len;//下一页搜索要在前一页最后长度len 开始查找,避免两页交接中间有特征码搜索不出来}return 0;
}int main(){HWND hWnd;hWnd=FindWindow(NULL,"植物大战僵尸中文版");DWORD PID;GetWindowThreadProcessId(hWnd,&PID);HANDLE lsProcess;lsProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,PID);cout<<ScanAddress(lsProcess,"834640FC8B4E40C786B4",0)<<endl;cout<<hanshu_dizhi<<endl;DWORD ss=0x90909090;//90对应nop  无操作WriteProcessMemory(lsProcess,(LPVOID)hanshu_dizhi,&ss,4,NULL);cout<<"植物不死开启" <<endl;return 0;
}

成功

上边代码只是对前两期博客所学内容的应用,看不懂请转入

https://blog.csdn.net/O8088/article/details/109514148    特征码

https://blog.csdn.net/O8088/article/details/109499360    读写内存

c语言 特征码思路来破植物大战僵尸相关推荐

  1. 易语言c编译程序集,植物大战僵尸。易语言.版本 2.程序集 窗口程序集1.程序集...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 植物大战僵尸.易语言 .版本 2 .程序集 窗口程序集1 .程序集变量 a, 整数型 .程序集变量 b, 整数型 .程序集变量 c, 整数型 .程序集变量 ...

  2. C语言也能写植物大战僵尸

    不少同学都玩过<植物大战僵尸>,最近PopCap公司又带来了新版的消息,这次高兴的轮到Xbox的用户了,日前PopCap公司公布了<植物大战僵尸>XBLA版的截图,这个版本的& ...

  3. C语言手写-植物大战僵尸

    植物大战僵尸,是一个非常经典的小游戏,初学者从零开始,开发一个自己的植物大战僵尸,还是非常值得期待的!可以作为自己的课设,也可以用来快速提升自己的项目开发能力. 项目效果(详细视频教程-下载素材-点这 ...

  4. 女友让我破解植物大战僵尸!我干脆撸了一款一样的....翻身舔狗把歌唱呀

    今天给大家分享的开源项目可以说非常适合入门,还比较好玩,更是一个有故事的项目.既能满足想学习的读者,又能满足那些喜欢八卦的读者. 提到植物大战僵尸相信大部分读者都不陌生,可以说是塔防类游戏的鼻祖.就鸟 ...

  5. 前女友让我撸个植物大战僵尸,我一怒之下把代码开源了...

    今天给大家分享的开源项目可以说非常适合入门,还比较好玩,更是一个有故事的项目.既能满足想学习的读者,又能满足那些喜欢八卦的读者. 提到植物大战僵尸相信大部分读者都不陌生,可以说是塔防类游戏的鼻祖.就鸟 ...

  6. 基于python开发植物大战僵尸

    目录 摘要 2 一, 引言 3 1.1中国游戏产业的现状 3 1.2中国游戏产业的未来发展局势 4 1.3植物大战僵尸游戏的发展状况 4 二.系统结构 5 2.1 Python3.8.2 IDLE 简 ...

  7. 计蒜客-植物大战僵尸

    嘟嘟最近迷恋上了一款游戏:植物大战僵尸.在梦中,他梦到了一个更加刺激的植物大战僵尸版本.有 n 个僵尸从起点出发,每个僵尸占用一个独立的直线道路.第 i 个僵尸在第一秒的速度为 f_if​i​​ ,之 ...

  8. java设计建议植物大战僵尸_基于Java的游戏设计之植物大战僵尸

    植物大战僵尸这款游戏相信大家或多或少都玩过,那么大家有没有想过自己尝试着做一下植物大战僵尸的游戏设计呢.本文将基于Java语言为大家展示如何开发出植物大战僵尸游戏的简易版本,主要内容包括规则.对象.功 ...

  9. 【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之植物篇

    目录 1.单卡片无CD 1.1 思路一 1.2 思路二 2.全卡片无CD 3.豌豆射手射速修改(修改植物射速) 4.实现豌豆射手发射"玉米加农炮"(思路) 上一期教程中,我们学习了 ...

  10. Python应用之植物大战僵尸2-功夫世界BOSS关卡无限刷金币

    植物大战僵尸2-功夫世界BOSS关卡无限刷金币 前提 思路 step 1 游戏重新开始 step 2 选择植物 step 3 放置植物 step 4 收集金币 结果 代码 树莓派开机启动设置 本人已经 ...

最新文章

  1. Facebook如何预测广告点击:剖析经典论文GBDT+LR
  2. 会排序吗_洗牌算法详解:你会排序,但你会打乱吗?
  3. webpack + loader 使用笔记
  4. 【数据结构与算法】之深入解析“分割回文串II”的求解思路与算法示例
  5. L1-011 A-B (20 分)(c语言实现)
  6. keystore文件_如何手动给APK文件签名
  7. Python 基础知识(二)
  8. TED 演讲 How we can control the coronavirus pandemic? 我们如何控制新冠病毒的传播 ?
  9. CF547D Mike and Fish 建图
  10. 【开发工具】【Bus Hound】USB抓包工具(Bus Hound)的使用
  11. 图像翻译三部曲:pix2pix, pix2pixHD, vid2vid
  12. 通过Windows任务计划 ,定期恢复虚拟机快照
  13. bcdedit删除引导_Bcdedit命令教程以及用于编辑Windows引导配置的示例
  14. Vue Error-报错信息:Syntax Error: Assigning to rvalue.
  15. 谷歌浏览器注入的样式表 (更改了我网页的样式)
  16. 【Hive】如何在 Hive 中创建外部表映射 Hbase 中已存在的表
  17. 川教版八年级计算机教学计划,川教版八年级下信息技术教学计划.doc
  18. ssm毕设项目高校学生社团管理系统n4pcu(java+VUE+Mybatis+Maven+Mysql+sprnig)
  19. 热修复——深入浅出原理与实现
  20. LeetCode344

热门文章

  1. matlab用直接三角分解法求解方程式,数值分析中直接三角分解法matlab程序.pdf
  2. cad如何打开stp文件_stp是什么文件?怎么打开stp文件?
  3. python导入文件夹下所有包_python 通过文件夹导入包的操作
  4. Redis数据结构之hash对象
  5. SIGIR 2022 | 港大等提出超图对比学习在推荐系统中的应用
  6. html中加入emjio表情,jqueryemoji表情插件
  7. 开心庄园html的代码,开心.html
  8. unity如何往下挖地形_Unity 地形
  9. 《UnityAPI.Camera摄像机》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+allCameras+cullingMask+OnPreCull+立钻哥哥++OK+)
  10. 蓝桥杯之单片机学习(十)——PWM脉宽调制信号的发生与控制