不要迷恋我,我只是利用Python修改了游戏内存

本文介绍了如何使用Python修改单机游戏数据,通过查找游戏内存地址并利用CE软件进行修改,实现无限资源的效果。文章提供实战过程、代码示例、所需工具的下载链接,并分享了Python技术储备的学习路线和相关资源。
摘要由CSDN通过智能技术生成

前言

大家好,我叫善念。

在这里插入图片描述
这次要做的是修改一款单机游戏的数据,学过C语言的朋友肯定经常会看到有些老师讲这个案例,就是《植物大战僵尸》这个课题,不过此文我将带大家利用Python来实现(2019原创课题,附视频教程)。

游戏的安装

关于安装的这一块…我以前是在网站上下载的,现在再去找估计随便百度下载一个就可以了,这里就用我之前的吧

在这里插入图片描述
安装下载后切记要避免点到一些广告上去,和一些浏览器的锁定勾选记得取消掉。 进入游戏是全屏,不方便我们观察效果以及编写程序,可以在选项中取消勾选全屏

在这里插入图片描述

思路

一句话总结

我的理解就是,所有的程序的本质都是变量与数值的集合。

比如说咱们玩的游戏它也是一个程序吧,游戏的角色血量、蓝条是不是都是一个数值储存在变量内,那么如果我们找到存放这个数值的变量(也可以叫做地址),修改这个变量的值,那么是不是就可以做到给咱们得人物加血量、修改人物等级的一系列操作。

大概的思路

首先确定修改哪一款游戏的数据,然后确定修改游戏的哪一个数据,然后去寻找这个游戏内这个数据的地址,然后去修改这个数据。

听起来有点绕。好吧,是我的语文学习得太差啦

实战

确定修改哪一款游戏的数据

这里需要利用到一个句柄查看工具这里我给大家已经下载好了。

链接: https://pan.baidu.com/s/1mUJ9Y8LntOsg0Vt9J0YMnA 提取码:4f7h

把放大镜拖动到游戏的标题上,就可以查看到这个窗口的所有信息

在这里插入图片描述
可以看下咱们任务管理器中的进程ID是否也是39156

在这里插入图片描述

代码

import win32process
# 进程模块
import win32gui
# 界面
# none  窗口的类名                窗口的ID
window_handle = win32gui.FindWindow(None, "植物大战僵尸中文版") #Pyspy++  窗口句柄win32gui.
print(window_handle)
process_id = win32process.GetWindowThreadProcessId(window_handle)[1] #取进程ID
print(process_id)
process_handle = win32api.OpenProcess(0x1F0FFF, False, process_id)#进程句柄
# 进程句柄是否可以被子进程继承,一般选false(不可被继承)
# #这种是用线程内核对象的默认安全属性, 子进程不能继承父进程的句柄,不可以继承,
# 则子进程是不可以通过句柄访问改内核对象。
print(process_handle)

关于这个代码我讲解一下 ,如何确定一款游戏是由进程的句柄来判断的,而我们手动取到游戏的窗口ID 与类名后,可以得到进程ID,由进程ID可以得到游戏句柄。

地址的寻找

阳光总值150, 种植一个豌豆需要100,非常不够用。咱们现在需要实现的功能是无限阳光,达到无限种植豌豆的效果。这里需要用到CE软件,我给大家提供。

链接: https://pan.baidu.com/s/1e0hRCK323Hiq3TM_lwBL4g 提取码:5e0r

在这里插入图片描述

视频教程

在这里插入图片描述
Python永远的神,实战开发游戏内存辅助!

修改数据

由于咱们是用Python这门编程语言来实现的,这里需要用Python去调C,用到动态链接库,所以要配置一下内核模块(动态链接库kernel32.dll),C:\Windows\System32\kernel32.dll放到这个目录下,我这里也给大家下载好了。

链接: https://pan.baidu.com/s/1idc_lYgqoqeJGrrjSw7tsg 提取码:zo2g

代码

import win32api
# 系统模块
import win32process
# 进程模块
import win32gui
# 界面
import ctypes
# C语言调用类型
# python中使用ctypes模块可以在python中直接调用C/C++。首先要将C/C++编译成动态库
# (.dl或.so),之后python中调用即可。
# C类型 调用约定
# kernel32.Wri
要在 Python 中远程连接服务器,你可以使用 paramiko 库。Paramiko 是一个用于 SSHv2 协议的 Python 实现,可以帮助你在远程服务器上执行命令、传输文件等操作。 首先,你需要确保已经安装了 paramiko 库。如果没有安装,你可以使用以下命令来安装它: ``` pip install paramiko ``` 接下来,你可以使用以下代码示例来建立 SSH 连接并执行命令: ```python import paramiko # 创建 SSH 客户端对象 client = paramiko.SSHClient() # 默认情况下,客户端不会主动接受新的 SSH 密钥 client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接到远程服务器 client.connect(hostname='服务器IP地址', port=22, username='用户名', password='密码') # 执行命令 stdin, stdout, stderr = client.exec_command('要执行的命令') # 获取命令输出 output = stdout.read().decode('utf-8') error = stderr.read().decode('utf-8') # 打印输出结果 print('命令输出:', output) print('错误信息:', error) # 关闭 SSH 连接 client.close() ``` 在上面的代码中,你需要将 `'服务器IP地址'`、`'用户名'` 和 `'密码'` 替换为实际的服务器信息。然后,你可以使用 `client.exec_command()` 方法来执行你需要在远程服务器上执行的命令,并使用 `stdout.read()` 和 `stderr.read()` 方法获取命令的输出和错误信息。 当然,还有其他一些参数和方法可以帮助你进行更高级的操作,你可以参考 paramiko 文档以了解更多信息:https://www.paramiko.org/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值