游戏太难通关?教你用CE和Python写一个属于自己的植物大战僵尸修改器(无限阳光,无限金币,无冷却时间)

效果图

开局没过1分钟植物已经全部种满,可以明显的看到阳光数量为92074,几乎用不完,直接让僵尸毫无体验感,僵尸:“你礼貌吗?”。

目录

效果图

一、前言

二、工具和游戏安装

1. 工具安装

2. 游戏下载

三、实现思路 

四、实战:修改阳光值

1. CE修改阳光值

2.代码实现得到窗口句柄

3.代码实现修改数据

4.实现修改阳光视频教程

五、实战:CE修改冷却值

1. 视频教程

2. 所有植物无冷却的教程

六、资源下载 

七、结语


一、前言

玩过电脑的的小伙伴应该对外挂都不陌生,但小伙伴们想过自己有一天也能做一个外挂吗?C/C++语言最适合写这类项目了,但是作为当今主流的Python语言也不甘示弱,所有我们就来看一看如何用python来制作植物大战僵尸的外挂。


二、工具和游戏安装

1. 工具安装

首先需要下载一个可以查看程序句柄的工具

链接:https://pan.baidu.com/s/1922Peza1vTFHL73pVE2PdA
提取码:ghi2

然后我们需要下载修改工具,修改工具用很多,在这里我们选取一个比较方便和简单的一个修改工具CE(有关CE是什么可以看看下方的介绍),下方链接里的CE工具我是做过汉化的(原版是英文),如果想重新下载新版本可以去官网看一下:Cheat Engine

CE修改器(Cheat Engine)是一款内存修改编辑工具,CE允许你修改游戏。它包括16进制编辑,反汇编程序,内存查找工具。与同类修改工具相比,它具有强大的反汇编功能,且自身附带了辅助工具制作工具,可以用它直接生成辅助工具。

链接:https://pan.baidu.com/s/1j5KO3hPli2Y3A6wRfWevcg
提取码:9hpq

2. 游戏下载

为了大家方便,最好下载我下方链接里的《植物大战僵尸》游戏,这样避免了版本不同而带来的差异

链接:https://pan.baidu.com/s/1TOmj_Lg5emB9ecw813Zzjg
提取码:ykgp


三、实现思路 

游戏的本质是什么?我认为 游戏=程序=数据=数据地址(变量与数值的集合)

理论上来讲我们可以修改这些变量与数值。比如说我们玩一款游戏,人物等级为10级,血量为100,因为它们都不是存储到一个变量里的,所已我们只要找到这个10和100的这个变量,让它等于我们想要的数值,就实现了外挂的功能!

总而言之我们只需要用程序实现寻找游戏的数据地址,然后修改它就行了。


四、实战:修改阳光值

1. CE修改阳光值

先打开植物大战僵尸游戏,游戏里点击“开始冒险”进入关卡,然后打开下载好的CE,再点击“电脑图标”,找到植物大战僵尸进程,然后打开它。

 把当前的游戏太阳值填到CE的“数值”那一行,然后在“扫描类型”中选择“进准扫描”,最后点击“首次扫描” 

种下植物后,把当前的游戏太阳值填到CE的“数值”那一行,然后点击“再次扫描(千万别点到左边的“新的扫描”上了,否则要重新搜索数值)

找的“结果”里的地址,双击地址,然后在下方的“地址栏”中双击数值下的“50”,最后修改数值

2.代码实现得到窗口句柄

打开下载好的“LookHandles”句柄查找工具,把工具里的“放大镜”拖到游戏窗口

代码:

首先下载pywin32库

pip install pywin32

在16行代码里的第二个参数填更改获取的窗口句柄

import win32gui  # 界面模块
import win32process  # 进程模块

kernel32 = ctypes.windll.LoadLibrary(r"kernel32.dll")  # 核心文件
PROCESS_ALL_ACCESS = (0x000F0000 | 0x00100000 | 0xFFF)  # 调用最高权限执行
window_handle = win32gui.FindWindow(None, "Plants vs. Zombies GOTY ")  # 找到窗口句柄
process_id = win32process.GetWindowThreadProcessId(window_handle)[1]  # 获取进程ID
process_handle = win32api.OpenProcess(PROCESS_ALL_ACCESS, False, process_id)  # 得到进程句柄

3.代码实现修改数据

代码:

data1 = ctypes.c_long()
kernel32.ReadProcessMemory(int(process_handle), 0x0077959c, ctypes.byref(data1), 4, None)
data2 = ctypes.c_long()
kernel32.ReadProcessMemory(int(process_handle), data1.value + 0x950, ctypes.byref(data2),4, None)
kernel32.WriteProcessMemory(int(process_handle), data2.value + 0x50, ctypes.byref(ctypes.c_long(int(money_num))), 4,None)

4.实现修改阳光视频教程

利用Python制作植物大战僵尸游戏外挂,万能的Python


五、实战:CE修改冷却值

1. 视频教程

因为这个功能有些难,用图片和文字的方式教学比较难以理解,推荐下方的视频教程,建议大家从视频6分47秒看到12分41秒,因为那位老师的版本和我们的版本不一样。后面的我会带大家完成让所有植物无冷却的教程,所以推荐小伙伴们先看完下方视频。

植物大战僵尸CE修改阳光和卡槽冷却教程

2. 所有植物无冷却的教程

没看上方视频的小伙伴们一定看,这样我才好教大家让所有植物无冷却

根据上方视频,找出冷却值地址后,右键点击地址,如何点击“找出是什么改写...”

在弹出的窗口点击“Yes”或“是” 

 种下一颗植物后可以看到刚刚弹出的窗口上多了3个数据,双击击红框中的数据

 在弹出的窗口中找到红框中的数据,然后双击它

 双击进去后,先不要做如何操作,直接按照图片里的步骤进行,先点击“工具”然后找到“自动汇编”并点击

在弹出的窗口下点击“模板”然后点击“CT...” 

如何在点击“模板”然后点击“代码注入”

然后在弹出的窗口下点击确定或OK

向下滑动,找的图中红框的代码,“,00”改成“,01”

再次向下滑动,找的图中红框的代码,“,00”改成“,01” 

完成后点击“文件”然后点击“分配到...”

最后关闭所有窗口,发现多了一行“自动化脚本”

最后点击“激活”,等到变成“X”,所有植物都不用冷却了,在配点无限阳光就无敌了!


六、资源下载 

链接:https://pan.baidu.com/s/1yj1HFI7iYuA6F5zAiCoCAw
提取码:uyha

注:

资源中修改冷却.CT文件只能在CE里运行,所有先请小伙伴们下载好CE工具,打开修改冷却.CT文件后要先点击带彩色光环的电脑图标,找到植物大战僵尸进程,然后打开,才能用。

打开进程后会弹出的窗口,一定要点击“Yes”或“是”,否则无法使用

一定不能两个同时打开!!!一定不能两个同时打开!!!一定不能两个同时打开!!!

只能一个打开,一个关闭才行

下图是错误示范!


七、结语

至此,就完成了Python实现植物大战僵尸功能!

制作外挂成功的小伙伴有木有一点小激动呢?如果在操作过程中有遇到什么问题,也欢迎向我反馈,喜欢的小伙伴可以点赞,收藏。之后小编会不定期更新一些博客,和分享自己的程序和经验。

猜你喜欢

转载自blog.csdn.net/python_sy/article/details/121576803