c语言 特征码思路来破植物大战僵尸
原理介绍:先用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语言 特征码思路来破植物大战僵尸相关推荐
- 易语言c编译程序集,植物大战僵尸。易语言.版本 2.程序集 窗口程序集1.程序集...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 植物大战僵尸.易语言 .版本 2 .程序集 窗口程序集1 .程序集变量 a, 整数型 .程序集变量 b, 整数型 .程序集变量 c, 整数型 .程序集变量 ...
- C语言也能写植物大战僵尸
不少同学都玩过<植物大战僵尸>,最近PopCap公司又带来了新版的消息,这次高兴的轮到Xbox的用户了,日前PopCap公司公布了<植物大战僵尸>XBLA版的截图,这个版本的& ...
- C语言手写-植物大战僵尸
植物大战僵尸,是一个非常经典的小游戏,初学者从零开始,开发一个自己的植物大战僵尸,还是非常值得期待的!可以作为自己的课设,也可以用来快速提升自己的项目开发能力. 项目效果(详细视频教程-下载素材-点这 ...
- 女友让我破解植物大战僵尸!我干脆撸了一款一样的....翻身舔狗把歌唱呀
今天给大家分享的开源项目可以说非常适合入门,还比较好玩,更是一个有故事的项目.既能满足想学习的读者,又能满足那些喜欢八卦的读者. 提到植物大战僵尸相信大部分读者都不陌生,可以说是塔防类游戏的鼻祖.就鸟 ...
- 前女友让我撸个植物大战僵尸,我一怒之下把代码开源了...
今天给大家分享的开源项目可以说非常适合入门,还比较好玩,更是一个有故事的项目.既能满足想学习的读者,又能满足那些喜欢八卦的读者. 提到植物大战僵尸相信大部分读者都不陌生,可以说是塔防类游戏的鼻祖.就鸟 ...
- 基于python开发植物大战僵尸
目录 摘要 2 一, 引言 3 1.1中国游戏产业的现状 3 1.2中国游戏产业的未来发展局势 4 1.3植物大战僵尸游戏的发展状况 4 二.系统结构 5 2.1 Python3.8.2 IDLE 简 ...
- 计蒜客-植物大战僵尸
嘟嘟最近迷恋上了一款游戏:植物大战僵尸.在梦中,他梦到了一个更加刺激的植物大战僵尸版本.有 n 个僵尸从起点出发,每个僵尸占用一个独立的直线道路.第 i 个僵尸在第一秒的速度为 f_ifi ,之 ...
- java设计建议植物大战僵尸_基于Java的游戏设计之植物大战僵尸
植物大战僵尸这款游戏相信大家或多或少都玩过,那么大家有没有想过自己尝试着做一下植物大战僵尸的游戏设计呢.本文将基于Java语言为大家展示如何开发出植物大战僵尸游戏的简易版本,主要内容包括规则.对象.功 ...
- 【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之植物篇
目录 1.单卡片无CD 1.1 思路一 1.2 思路二 2.全卡片无CD 3.豌豆射手射速修改(修改植物射速) 4.实现豌豆射手发射"玉米加农炮"(思路) 上一期教程中,我们学习了 ...
- Python应用之植物大战僵尸2-功夫世界BOSS关卡无限刷金币
植物大战僵尸2-功夫世界BOSS关卡无限刷金币 前提 思路 step 1 游戏重新开始 step 2 选择植物 step 3 放置植物 step 4 收集金币 结果 代码 树莓派开机启动设置 本人已经 ...
最新文章
- Facebook如何预测广告点击:剖析经典论文GBDT+LR
- 会排序吗_洗牌算法详解:你会排序,但你会打乱吗?
- webpack + loader 使用笔记
- 【数据结构与算法】之深入解析“分割回文串II”的求解思路与算法示例
- L1-011 A-B (20 分)(c语言实现)
- keystore文件_如何手动给APK文件签名
- Python 基础知识(二)
- TED 演讲 How we can control the coronavirus pandemic? 我们如何控制新冠病毒的传播 ?
- CF547D Mike and Fish 建图
- 【开发工具】【Bus Hound】USB抓包工具(Bus Hound)的使用
- 图像翻译三部曲:pix2pix, pix2pixHD, vid2vid
- 通过Windows任务计划 ,定期恢复虚拟机快照
- bcdedit删除引导_Bcdedit命令教程以及用于编辑Windows引导配置的示例
- Vue Error-报错信息:Syntax Error: Assigning to rvalue.
- 谷歌浏览器注入的样式表 (更改了我网页的样式)
- 【Hive】如何在 Hive 中创建外部表映射 Hbase 中已存在的表
- 川教版八年级计算机教学计划,川教版八年级下信息技术教学计划.doc
- ssm毕设项目高校学生社团管理系统n4pcu(java+VUE+Mybatis+Maven+Mysql+sprnig)
- 热修复——深入浅出原理与实现
- LeetCode344
热门文章
- matlab用直接三角分解法求解方程式,数值分析中直接三角分解法matlab程序.pdf
- cad如何打开stp文件_stp是什么文件?怎么打开stp文件?
- python导入文件夹下所有包_python 通过文件夹导入包的操作
- Redis数据结构之hash对象
- SIGIR 2022 | 港大等提出超图对比学习在推荐系统中的应用
- html中加入emjio表情,jqueryemoji表情插件
- 开心庄园html的代码,开心.html
- unity如何往下挖地形_Unity 地形
- 《UnityAPI.Camera摄像机》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+allCameras+cullingMask+OnPreCull+立钻哥哥++OK+)
- 蓝桥杯之单片机学习(十)——PWM脉宽调制信号的发生与控制