目录

  • 1. CE使用
  • 2. C语言代码
  • 3. 效果

1. CE使用

思路,通过CE找到阳光的静态基址和偏移值,也就是基址+偏移值 = 阳光数目的地址

1、打开植物大战僵尸和CE

2、 打开植物大战僵尸进程

3、开始游戏

4、 在CE中输入阳光数,点击新的搜索

6、回到游戏,改变阳光的数目,然后再次搜索,最终看到只有一个数据

7、右击->找出是什么访问了这个地址

8、双击第二个查看详细信息,获取偏移值和地址,复制地址指针数值

9、回到搜索界面,以16进制,点击新的搜索搜索复制的地址

10、这里找到第一个不是00的地址,我在网上看到说00开头的是操作系统的一些操作,这里我也不太清除。找到后右键,找出是什么访问了这个地址。

11、 点击第一个查看详细信息,记住红色地方的偏移值,同样复制

12、 主页面搜索该地址,找到绿色的地址,就是静态地址了

双击,下方会出现绿色的静态地址的信息

13、验证上面步骤圈出的红色的是第几次偏移,然后使用c语言代码实现

14、打开VS2019, 点击工具->Spy++(+)->点击搜索,把红色的那部分用鼠标拖动到植物大战僵尸的窗口上,获取窗口名字和窗口类型,这一步没有VS的话到网上下载一个也行。

2. C语言代码

1、初始化

//初始化
void init() {//植物大战僵尸外挂//找出植物大战僵尸的窗口句柄,唯一标识//查找窗口,参数1:窗口类型         参数2:窗口名字hGameWnd = FindWindow(L"MainWindow", L"Plants vs. Zombies");//如果窗口句柄是空,就是说没有运行程序if (hGameWnd == NULL) {printf("你没有运行该游戏\n");exit(0);}//根据窗口获取PID(ProcessID),进程id,也就是我们在ce中选择进程那一步//参数1:窗口句柄,参数2:要存储的PID的地址GetWindowThreadProcessId(hGameWnd, &dwPID);if (dwPID == 0) {printf("获取PID失败\n");exit(0);}//根据PID获取进程句柄,有了进程PID,我们就可以操作植物大战僵尸了hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPID);if (hProcess == NULL) {printf("获取进程句柄失败\n");exit(0);}
};

2、修改阳光

//修改阳光
void modifySunshine() {//要修改的数据地址unsigned long baseAddress = 0x00755EAC;//读出来的数据存到其中unsigned long baseAddressValue = 0;//实际读了多大unsigned long dwSize = 0;//读取进程的内存,这一步将静态地址中的数据读到baseAddressValue中if (ReadProcessMemory(hProcess, (void*)baseAddress, &baseAddressValue, sizeof(unsigned long), &dwSize) == FALSE) {printf("读取静态地址失败\n");return;}//一级偏移,这一步是我们刚刚通过CE得到的unsigned long sunShineOffsetFirst = 0x868;unsigned long sunshineOffsetFirstValue = 0;//读取进程的内存//这一步参数2是要操作的地址,参数三是要把该地址的数据读到sunshineOffsetFirstValue中//也就是这一步把第一次偏移地址的值读到sunshineOffsetFirstValue中if (ReadProcessMemory(hProcess, (void*)(baseAddressValue + sunShineOffsetFirst), &sunshineOffsetFirstValue, sizeof(unsigned long), &dwSize) == FALSE) {printf("一级偏移获取失败\n");return;}//二级偏移,也是我们根据CE获取的,unsigned long sunshineOffsetSecond = 0x5578;unsigned long sunshine = 0;//读取进程的内存//这一步我们操作的地址是二次偏移后的地址,也就是阳光的地址if (ReadProcessMemory(hProcess, (void*)(sunshineOffsetFirstValue + sunshineOffsetSecond), &sunshine, sizeof(unsigned long), &dwSize) == FALSE) {printf("一级偏移获取失败\n");return;}printf("当前阳光值=%d,", sunshine);printf("请输入新的阳光值:");scanf("%d", &sunshine);//使用新的阳光值写进内存//修改阳光值if (WriteProcessMemory(hProcess, (void*)(sunshineOffsetFirstValue + sunshineOffsetSecond), &sunshine, sizeof(unsigned long), &dwSize) == FALSE) {printf("修改失败\n");return;}printf("已修改\n");
}

一级二级偏移怎么确定的:

上面就是代码了,在c语言编译器中创建一个类,直接复制粘贴,然后填上自己的地址就可以用了。而且最终操作的是静态地址,就算关闭植物大战僵尸再打开也可以用。、

3. 效果



最后,其实拿到了内存地址,我们还可以修改僵尸冷却时间、自动收集阳光…自动收集阳光需要多线程操作,并且搜索的过程有点复杂,而且我的VS2019使用多线程有问题,所以这个功能以后再弄。

如有错误,欢迎指出

C语言+CE修改植物大战僵尸阳光相关推荐

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

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

  2. CE修改植物大战僵尸-天上无限掉落阳光(小宇特详解)

    CE修改植物大战僵尸-天上无限掉落阳光 里是CE修改植物大战僵尸的第三个博客,其他的操作请看我之前的博客. 天上无限掉落阳光. 这里说明一下版本: CE:CE6.8 植物大战僵尸版本:植物大战僵尸95 ...

  3. CE修改植物大战僵尸-关卡基址(小宇特详解)

    CE修改植物大战僵尸-关卡基址 这里是CE修改植物大战僵尸的第二个博客,其他的操作请看我之前的博客. 植物大战僵尸的关卡基址寻找. 这里说明一下版本: CE:CE7.4 植物大战僵尸版本:植物大战僵尸 ...

  4. CE修改植物大战僵尸豌豆射手的射速

    首先我们要找到吐出豆豆的地址.当一个豌豆射手吐出一个豆豆后,豆豆距离僵尸的距离会逐渐减少.这个就是我们ce扫描时的突破口.由于豆豆的速度比较快我们扫描起来不方便,这里改变游戏的速度,方便我们扫描.我们 ...

  5. ce逆向修改——植物大战僵尸针对“阳光值”

    ce逆向修改--植物大战僵尸 一.实验目的 为熟悉CE的使用和对软件逆向分析有进一步的了解. 二.实验设备 Cheat Engine 6.8.植物大战僵尸 三.实验内容 1.针对"阳光值&q ...

  6. CE实战:修改植物大战僵尸中阳光数值

    CE实战:修改植物大战僵尸中阳光数值 游戏版本:植物大战僵尸中文版( PlantsVsZombies ) Cheat Engine 版本:Cheat Engine 7.0 一.打开游戏 二.打开CE并 ...

  7. [re入门]ce对植物大战僵尸的修改

    CE对植物大战僵尸的修改 1.对阳光的修改 思路:通过种植物来改变阳光的数值,ce中使用精确数值搜索即可,如下图 植物偏移地址的寻找(不需要每次都搜阳光地址,直接修改即可) 上面的地址点右键,什么访问 ...

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

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

  9. cheat engin修改植物大战僵尸游戏

                 cheat engin修改植物大战僵尸游戏 修改阳光 思路:首先载入进程,如图黑圈勾画处 然后将初始阳光写入数值处并搜索,如下图 此时会出现许多地址,我们无法确定阳光的所在地 ...

最新文章

  1. docker挂载NVIDIA显卡
  2. WCF获取客户端IP和端口
  3. 【正一专栏】梅西终老巴萨可被裁判吹掉了已进之球
  4. Java使用String.format()实现补零
  5. 【Zabbix】邮件接收 Problem 通知
  6. h5 canvas基本知识
  7. Kali Linux 秘籍 第七章 权限提升
  8. linux下shell程序(一)
  9. 从字符串或16进制数得到UIColor
  10. redis scala编程之创建连接
  11. 概率论与数据统计在分类预测中的原理介绍(信息增益、交叉熵等)
  12. Nuke对图片添加Alpha通道
  13. 在matlab编辑大于号,教你怎么用MathType编辑大于或小于符号
  14. 视频与编解码的技术邂逅,碰撞出的高清罗曼史
  15. 基于Android+Springboot+Mybatis+Mysql的个人生活APP设计 说明书+项目源码
  16. cad断点快捷键_入门CAD必备,如何有效记住CAD快捷键
  17. php的坑,PHP中的这容易被踩的坑,新人必看
  18. 从头开始 windows 10 安装awscli,aws sam
  19. fiddle android
  20. 测试面试挫败_清晰度,初级工程师,要求和挫败感

热门文章

  1. 设备管理-----操作系统
  2. 北京邮电大学22级信通 实验三 二叉树
  3. 【Electron】Electron开发入门(五):项目打包
  4. 校企合作计算机专业共建协议书,校企合作共建实训基地协议书
  5. 校企合作案例 《商业智能》| 融合FineBI的省级一流课程、MOOC精品课程的翻转课堂教学
  6. 浮生散记——格蠹和我的2021
  7. 【H.264/AVC视频编解码技术详解】十七:帧内预测编码的预测实现方法
  8. 计算机为什么要使用补码计算?
  9. 【LiteOS】小白进阶之常用 LiteOS 任务接口与基础原理详解(一)
  10. DoTween打字机效果