Python如何修改游戏内存

技术Python如何修改游戏内存这篇文章将为大家详细讲解有关Python如何修改游戏内存,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。游戏的安装关于安装的这一块....我以前是在网站上

本文将详细解释Python如何修改游戏内存。边肖觉得很实用,就分享给大家参考。希望你看完这篇文章能有所收获。

关于这个装置.以前是从网站上下载的,现在要去找。估计只要从百度下载一个,我这里就用我之前的。

链接:https://pan.baidu.com/s/1Ydiy1Q9QqKNxoyAkIlzp7Q

提取代码:1234

Python如何修改游戏内存

下载后记得避免点击一些广告,记得取消一些浏览器的锁定检查。进入游戏是全屏的,不方便我们观察效果和写程序。您可以在选项中取消全屏幕。

Python如何修改游戏内存

游戏的安装

10-1010我的理解是,所有程序的本质都是变量和值的集合。

比如我们玩的游戏也是一个程序。角色的血量和游戏的蓝条都存储在一个变量里吗?如果我们找到存储这个值的变量(也叫地址)并修改这个变量的值,是否可以做一系列的操作来给我们的角色增加血量并修改他们的等级?

00-1010首先确定要修改哪些游戏数据,然后确定要修改哪些游戏数据,然后找到这个数据在这个游戏中的地址,然后修改这个数据。

听起来有点拐弯抹角。嗯,是我语文学习不好。

00-1010

思路

在这里,我们需要使用一个手柄查看工具,这是我为大家下载的。

链接:https://pan.baidu.com/s/1ubpe7bmIsojbcX3z_24CxA

提取代码:1234

将放大镜拖到游戏标题上,即可看到此窗口中的所有信息。

Python如何修改游戏内存

你看我们任务管理器里的流程ID是不是也是39156?

Python如何修改游戏内存

一句话总结

import win 32进程

#流程模块

importwin32gui

#接口

#无窗口类名窗口的标识

win _ handle=win32gui . find window(无,‘植物大战僵尸中文版’)# py spy窗口句柄win 32 GUI。

打印(窗口句柄)

Process _ ID=Win32Process。GetWindowThreadProcessID(window _ handle)[1]#获取进程ID

打印(进程id)

process _ handle=win32 API . open process(0x 10 fff,false,process _ ID) # process handle

#进程句柄是否可以被子进程继承,一般选择false(不能继承)。

# #这是线程内核对象的默认安全属性。子进程不能继承父进程的句柄,也不能继承它。

#那么子进程是不能通过句柄访问内核对象。

Print(process_handle)我来解释一下这段代码,如何判断一个游戏是由进程句柄来判断的,在我们手动获取游戏的窗口ID和类名后,就可以得到进程ID,进程ID就可以得到游戏句柄。

大概的思路

年的日照总值是150,种一颗豌豆需要100,这还不够。我们现在需要实现的功能是无限阳光,达到无限种植豌豆的效果。这里需要CE软件,我会提供给你。

链接:https://pan.baidu.com/s/1mkEmVUonDBS6zBjJjYDFSQ

提取代码:1234

Python如何修改游戏内存

实战

P

ython永远的神,实战开发游戏内存辅助!

修改数据

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

链接:https://pan.baidu.com/s/1kAwg7PE_zZP_sqkaluD4QA
提取码:1234

代码
import win32api
# 系统模块
import win32process
# 进程模块
import win32gui
# 界面
import ctypes
# C语言调用类型
# python中使用ctypes模块可以在python中直接调用C/C++。首先要将C/C++编译成动态库
# (.dl或.so),之后python中调用即可。
# C类型 调用约定
# kernel32.WriteProcessMemory(int(process_handle),0x1C0A4F98,byref(c_int(1000)),4,byref(c_int(0)))
kernel32 = ctypes.windll.LoadLibrary(r"C:\Windows\System32\kernel32.dll ")#加载内核模块  动态链接库
date1 = ctypes.c_long()
kernel32.ReadProcessMemory(int(process_handle),0x006A9EC0,ctypes.byref(date1),4,None)#None读取的一个数据的大小 尺寸 长度
# 缓冲区,各种语言的文本要求不一样,为了兼容,那么自定义一个文本
# 地址会变,但是里面存储的数据不会变。
print(date1.value)
date2 = ctypes.c_long()
kernel32.ReadProcessMemory(int(process_handle),date1.value+0x768,ctypes.byref(date2),4,None)
print(date2.value)
date3 = ctypes.c_long()
kernel32.ReadProcessMemory(int(process_handle),date2.value+0x5560,ctypes.byref(date3),4,None)
print(date3.value)
sun = input("请输入你要改变的阳光值:")
# kernel32.WriteProcessMemory(int(process_handle),date2.value+0x5560,ctypes.byref(ctypes.c_long(int(sun))),4,None)
kernel32.WriteProcessMemory(int(process_handle),date2.value+0x5560,ctypes.byref(ctypes.c_long(int(sun))), 4, None)
# 关闭进程
kernel32.CloseHandle(int(process_handle))

效果

Python如何修改游戏内存

完整的源码

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time    : 2019/4/30 16:00
# @Author  : 善念
 
import win32api
# 系统模块
import win32process
# 进程模块
import win32gui
# 界面
import ctypes
# C语言调用类型
# python中使用ctypes模块可以在python中直接调用C/C++。首先要将C/C++编译成动态库
# (.dl或.so),之后python中调用即可。
# 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)
# C类型 调用约定
# kernel32.WriteProcessMemory(int(process_handle),0x1C0A4F98,byref(c_int(1000)),4,byref(c_int(0)))
kernel32 = ctypes.windll.LoadLibrary(r"C:\Windows\System32\kernel32.dll ")#加载内核模块  动态链接库
date1 = ctypes.c_long()
kernel32.ReadProcessMemory(int(process_handle),0x006A9EC0,ctypes.byref(date1),4,None)#None读取的一个数据的大小 尺寸 长度
# 缓冲区,各种语言的文本要求不一样,为了兼容,那么自定义一个文本
# 地址会变,但是里面存储的数据不会变。
print(date1.value)
date2 = ctypes.c_long()
kernel32.ReadProcessMemory(int(process_handle),date1.value+0x768,ctypes.byref(date2),4,None)
print(date2.value)
date3 = ctypes.c_long()
kernel32.ReadProcessMemory(int(process_handle),date2.value+0x5560,ctypes.byref(date3),4,None)
print(date3.value)
sun = input("请输入你要改变的阳光值:")
# kernel32.WriteProcessMemory(int(process_handle),date2.value+0x5560,ctypes.byref(ctypes.c_long(int(sun))),4,None)
kernel32.WriteProcessMemory(int(process_handle),date2.value+0x5560,ctypes.byref(ctypes.c_long(int(sun))), 4, None)
kernel32.CloseHandle(int(process_handle))
# 关闭进程

关于“Python如何修改游戏内存”这篇文章就分享到这里了,希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/111349.html

(0)

相关推荐

  • spring boot动态生成接口怎么实现

    技术spring boot动态生成接口怎么实现本篇内容主要讲解“spring boot动态生成接口怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“spring boot

    攻略 2021年11月29日
  • JS页面模板化有哪些

    技术JS页面模板化有哪些这篇文章主要介绍“JS页面模板化有哪些”,在日常操作中,相信很多人在JS页面模板化有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JS页面模板化有哪些”的疑惑有

    攻略 2021年11月18日
  • mysql中timestamp比较查询遇到的坑有哪些

    技术mysql中timestamp比较查询遇到的坑有哪些这篇文章主要介绍mysql中timestamp比较查询遇到的坑有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!timestamp比较查询

    攻略 2021年11月25日
  • 如何轻松搞定Pdf转Word用Python

    技术如何轻松搞定Pdf转Word用Python这期内容当中小编将会给大家带来有关如何轻松搞定Pdf转Word用Python,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。大家在日常的工作

    2021年10月28日
  • 无权限访问共享文件夹,文件夹共享了但是不能访问权限

    技术无权限访问共享文件夹,文件夹共享了但是不能访问权限1.guest账户开启2.允许Guest用户从网络访问本机点击“开始→运行”无权限访问共享文件夹,在“运行”对话框中输入“GPEDIT.MSC”,打开组策略编辑器,依

    生活 2021年10月29日
  • Elasticsearch有哪些面试题

    技术Elasticsearch有哪些面试题这篇文章主要为大家展示了“Elasticsearch有哪些面试题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Elasticsear

    攻略 2021年11月17日