Python 开发植物大战僵尸杂交版辅助【全网最详细_查找 + 代码编写一体化零基础也能学会】

目录

辅助最终展示效果

一、文章介绍

二、工具介绍

三、基址搜索

3.1、寻找阳光基址

3.2、寻找卡槽冷却基址

3.3、寻找僵尸刷新时间基址

3.4、寻找大阳光刷新时间基址

3.5、寻找植物编号基址

3.6、寻找场上僵尸数量基址

3.7、寻找僵尸 X 坐标基址

3.8、通过找到的僵尸 X 轴坐标基址寻找 Y 轴、血量等基址

3.9、寻找每只僵尸之间的地址偏移

四、代码编写

4.1、基础代码

4.2、功能代码

4.2.1、编写实现无限阳光

4.2.2、编写植物无冷却

4.2.3、编写僵尸全出功能

4.2.4、编写无限刷新大太阳功能

4.2.5、编写植物替换功能

4.2.6、编写获取场上僵尸数量功能

4.2.7、编写获取获取僵尸数组功能

4.2.8、编写绘制僵尸方框功能

4.3、完整代码

五、总结


辅助最终展示效果

演示视频

一、文章介绍

        写这篇文章的目的是告诉大家游戏单机辅助是如何编写的,这种方法在其他部分非单机游戏也能适用,开发者该如何去防范,知攻善防,并不鼓励大家写游戏外挂。

        游戏辅助本身就是利用游戏漏洞进行开发的,在单机游戏中,游戏数据都是存储在本地的,运行游戏后通过使用相应的内存查找工具获取到当前游戏数据的存储地址,通过对其数据进行修改来达到游戏规则之外的效果,使玩家可以轻松通过。

        通过本篇文章的学习我们就可以知道辅助开发者是如何获取到游戏数据的,对我们游戏开发人员是有一定的帮助的,比如我们可以对游戏数据进行加密,增加辅助开发的难度,来尽量维持游戏的平衡等......

二、工具介绍

1、CE(内存搜索工具)

2、植物大战僵尸杂交版 2.0.88

3、精易助手 (后文用到的时候有附带下载链接,读者现在不必理会)

4、PyCharm Community Edition 2023.3.4(Python 开发环境)

5、SafeDog (Python 游戏安全测试模块,需要模块联系我

【版本不需要和我一样也可以,不过我所用的 Python 是  Python3 ,这点大家尽量和我保持一样,因为有些代码的使用在 Python2 中区别比较大】

三、基址搜索

3.1、寻找阳光基址

打开游戏和 CE 工具并附加进程

附加完成后进入游戏关卡

CE 中填写设置相关信息

回到游戏种植植物或者拾取太阳使阳光数量发生变化

在 CE 中搜索 375,其他东西不用变,然后点击 Next Scan(下一次扫描,是在第一次的基础上进行扫描的),注意不是 New Scan

只剩一条数据,那么这条就是阳光的地址了,不过这只是临时地址,也就是说,游戏关闭再开地址就变了,我们如果要制作辅助就需要找到数据的基址(不会变动的,不关游戏关了几次或是重新安装,都不会变)

然后会打开如下窗口,这个窗口不要关,我们回到游戏再次改变阳光的数量,观察窗口的变化

这个 eax + 5560 的 5560 就是我们的一级偏移

选择 New Scan 再选 First Scan

这里告诉大家怎么去找多级指针,我们找地址比较特殊的和其他差别比较大的那种地址,如图所示

所以我们就右键查看是谁访问了他,这里要选访问,而不是改写

找到这种数据就要偷笑了,因为像这种很整齐的而且偏移都是一样的大概率就是找对了,我们再回到游戏改变一下阳光的数量

因为我们第一次找到的是 eax + 5560 所以这里要找 mov eax 开头的,这些是汇编知识了,寄存器相关的,大家不懂可以去找书或视频看,这里先看操作学习思路

双击打开

继续搜索,其他操作不变,然后你就会发现找到了基址了,当然了如果你的 CE 版本和我的不同他可能显示的是十六进制的地址,而不是名称,都这无所谓,他们都是绿色的,这里我试过了,每一条都可以作为基址,随便选一条就好了,这里我选择最后一条

填完之后点击 OK,然后就会发现关闭游戏再打开它仍然有效(注意 CE 要重新附加进程),写游戏辅助的时候就需要用到它了

PlantsVsZombies.exe+2AA00C + 768 + 5560

3.2、寻找卡槽冷却基址

        好了,通过查找阳光基址相信读者已经大致了解了 CE 的简单使用了,那么接下来的内容里我就不一一截图解释了,部分通过文字的描述来给大家讲解,操作都是大同小异的,聪明的你肯定能明白。

        寻找卡槽基址有什么用呢?当然是实现植物无冷却啊,我们首先要了解游戏的冷却原理,没次种植植物后,植物就会在卡槽中进入生长时间也就是我们说的冷却时间。在植物大战僵尸中冷却结束表示 1,冷却开始表示 0(也就是拿起植物但不种植时卡槽的状态)。

一直重复拿起搜索 0,放下搜索 1,获取搜索完后不要返回游戏继续点击搜索未变动的数值,过滤掉那些变动的值,因为我们没有对卡槽进行操作,那么它对应的值就不会变

扫到 200 多条数据的时候就差不多了,因为不可能每次都和找阳光那样一下就找得只剩下一条,有些数据过滤完还剩下几千条也有,接下来就需要自己去判断了。

点第一条数据,然后把滚动条拉倒中间,按住键盘上的 shift 键然后再随便选一条数据点一下

通用的方法按 shift 选择一半的数据然后按回车对值进行修改,如果我们的卡槽现在是亮的我们就改成 0,反之改成 1 然后按回车全部锁定,再看一下游戏的卡槽里吗有没有变暗(亮),如果有说明正确的地址在我们选择的数据中,另外一部分没选的数据就可以删除了,然后再利用二分法继续寻找,直到找到正确的地址。

接下来就用同样的方法寻找基址即可,不过需要注意的是,要把数据类型改回 4 Byte

这样就可以找到第一个卡槽冷却时间的基址了

PlantsVsZombies.exe+2AA00C + 768 + 144 + 70

通用的方法我们去寻找第二个第三个卡槽的冷却时间,我就会发现他们的基址分别如下:

第二个卡槽:PlantsVsZombies.exe+2AA00C + 768 + 144 + C0

第三个卡槽:PlantsVsZombies.exe+2AA00C + 768 + 144 + 110

他们之间偏移相差 50 (十六进制),那么以此类推就可以知道后面所有卡槽的冷却基址了,我们只需要通过写循环就可以实现全卡槽无冷却。

3.3、寻找僵尸刷新时间基址

        找到关卡进度条基址我们就可以实现僵尸全部出现,然后快速通过。我们首先要知道,植物大战僵尸中,每一波僵尸出现的间隔是一个倒计时,比如第一波出现了那么就进入倒计时,时间一到就刷新第二波僵尸,我们要找进度条基址也就是找到这个间隔的时间地址,把它改成 1 并且锁定,那么僵尸就会一次性全部出现。

【注意关卡刚开始还未出僵尸的时候也是在倒计时,这时候就可以开始扫描了,当然了一定要卡好时间,因为我们在倒计时期间扫描的是减少的值,一不小心僵尸刷新了,这时候值是变大了重新开始倒计时,如果还扫描变少的值那

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/870922.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《昇思25天学习打卡营第1天|QuickStart》

说在前面 曾经接触过华为的910B服务级显卡,当时基于910B做了一些开发的工作,但是总感觉做的事情太低层,想要能自顶向下的了解下,因此开始了MindSpore的学习。另外也想给予提供的显卡,简单尝试下llm模型的训练&#xf…

数据库mysql-对数据库和表的DDL命令

文章目录 一、什么是DDL操作二、数据库编码集和数据库校验集三、使用步骤对数据库的增删查改1.创建数据库2.进入数据库3.显示数据库4.修改数据库mysqldump 5.删除数据库 对表的增删查改1.添加/创建表2.插入表内容3.查看表查看所有表查看表结构查看表内容 4.修改表修改表的名字修…

SpringBootWeb 篇-入门了解 Swagger 的具体使用

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 Swagger 介绍 1.1 Swagger 和 Yapi 的使用场景 2.0 Swagger 的使用方式 2.1 导入 knife4j 的 maven 坐标 2.2 在配置类中加入 knife4j 相关配置 2.3 设置静态资源…

oracle控制文件详解以及新增控制文件

文章目录 oracle控制文件1、 控制文件包含的主要信息如下:2、查看目前系统的控制文件信息,主要是查看相关的字典视图 oracle新增控制文件 oracle控制文件 控制文件是一个很小的二进制文件(10MB左右),含有数据库结构信息,包括数据…

Open3D 点云Kmeans聚类算法

目录 一、概述 1.1算法介绍 1.2实现步骤 二、代码实现 三、实现效果 3.1原始点云 3.2聚类后点云 前期试读,后续会将博客加入该专栏,欢迎订阅Open3D与点云深度学习的应用_白葵新的博客-CSDN博客 一、概述 1.1算法介绍 聚类是一种将数据集分组的方…

Next.js的静态生成和服务端渲染,你搞懂了吗?

Next.js的静态生成和服务端渲染,你搞懂了吗? 嘿,各位前端小伙伴们!今天咱们来聊聊Next.js中那令人又爱又恨的静态生成(Static Generation)和服务端渲染(Server-side Rendering)。这…

双语|如何给教授/教职员发送电子邮件

斯坦福大学提出建议,指导学生如何给教授或者教职员发送电子邮件,这些建议对于访问学者、博士后及联合培养博士也很适用,故知识人网小编用双语对照的形式进行节选转发。 Whether youre writing a professor to ask for an extension or to loo…

多平台支持,制作的电子画册随时随地都可以查看

​在数字化的时代背景下,电子画册以其便捷的传播方式、丰富的视觉表现形式,赢得了大众的喜爱。它不仅能够在个人电脑上展现,还能通过智能手机、平板电脑等多种移动设备随时随地被访问和浏览。这种跨平台的支持,使得无论你身处何地…

高精度定位与AI技术的深度融合——未来智慧世界的钥匙

引言在当今迅速发展的科技时代,精确定位和人工智能(AI)技术正在快速推动各领域的创新与变革。高精度定位结合AI技术所产生的融合效应,正在加速智慧城市、智能驾驶、智能物流以及许多其他领域的实现。这篇文章将详细探讨高精度定位…

基于Java技术的校园台球厅人员与设备管理系统

你好呀,我是计算机学姐码农小野!如果有相关需求,可以私信联系我。 开发语言:Java 数据库:MySQL 技术:SpringBoot框架 工具:Eclipse、Navicat、Maven 系统展示 首页 用户注册界面 球桌信息…

C++基础编程100题-023 OpenJudge-1.4-03 奇偶数判断

更多资源请关注纽扣编程微信公众号 http://noi.openjudge.cn/ch0104/03/ 描述 给定一个整数,判断该数是奇数还是偶数。 输入 输入仅一行,一个大于零的正整数n。 输出 输出仅一行,如果n是奇数,输出odd;如果n是偶…

Twelve Labs:专注视频理解,像人类一样理解视频内容

在当今数字化世界中,视频已成为人们获取信息和娱乐的主要方式之一。 AI视频生成领域的竞争也很激烈,Pika、Sora、Luma AI以及国内的可灵等,多模态、视频生成甚至也被视为大模型发展的某种必经之路。然而,与文本生成相比&#xff…

深入解析发生 OOM 的三大场景

深入解析 OOM 的三大场景 什么是 OOM?一、堆内存溢出 ( Heap OOM )原因分析解决方案 二、栈内存溢出(Stack OOM)原因分析解决方案 三、方法区内存溢出(Metaspace OOM)原因分析解决方案 在Java应用程序开发中&#xff0…

记录一次Nginx的使用过程

一、Docker安装配置nginx 1.拉取镜像 docker pull nginx2.创建挂载目录 启动前需要先创建Nginx外部挂载目录文件夹 主要有三个目录 conf:配置文件目录log:日志文件目录html:项目文件目录(这里可以存放web文件) 创建挂…

oslo_i18n学习小结

背景 代码均为开源代码 基于yoga版本,需要对openstack某服务做翻译,了解到oslo_i18n有翻译功能,配置oslo_i18n来给组件进行翻译 用法 用法 每个服务自己会带一个i18n.py的文件,如果要对日志进行翻译,从i18n导入_&…

逆变-TI视频课笔记

目录 1、全桥逆变 1.1、全桥逆变SPWM仿真 2、半桥逆变 2.1、本课小结 3、多重逆变(间接的“交-直-交-直”变流) 3.1、多电平逆变的目的 3.2、单逆变桥 3 电平控制时序 3.3、大功率设备的功率因数 3.4、本课小结 视频链接:文字…

Zed 编辑器发布了原生 Linux 版本

由 Rust 编写、GPU 加速的 Zed 文本编辑器终于提供了正式的 Linux 原生版本!在过去的几个月里,Zed 的 Linux 支持取得了长足的进步,现在已经进入了更正式的阶段。 今天,这款由前 Atom 开发人员创建的现代开源代码编辑器现在在 Li…

vue vite+three在线编辑模型导入导出

文章目录 序一、1.0.0版本1.新增2.编辑3.导出4.导入 二、2.0.0版本1. 修复模型垂直方向放置时 模型会重合4. 修复了导出导入功能 现在是1:1导出导入5. 新增一个地面 视角看不到地下 设置了禁止编辑地面 地面设置为圆形6. 新增功能 可选择基本圆形 方形 圆柱形等模型以及可放置自…

网络 闲聊

闲谈 闲话 网络安全——>网络空间安全 网络空间:一个由信息基础设备组成互相依赖的网络 继:海、陆、空、天、的第五大空间 信息安全的一个发展: 通信保密阶段---计算机安全---信息系统安全---网络空间安全 棱镜门事件 棱镜计划&…

Java中的Set系列集合超详解

Set List是有序集合的根接口,Set是无序集合的根接口,无序也就意味着元素不重复。更严格地说,Set集合不包含一对元素e1和e2 ,使得e1.equals(e2) ,并且最多一个空元素。   使用Set存储的特点与List相反:元素…