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)

相关推荐

  • 如何编写一键统计数据库临时表空间和阻塞lock信息的Shell脚本

    技术如何编写一键统计数据库临时表空间和阻塞lock信息的Shell脚本这篇文章给大家介绍如何编写一键统计数据库临时表空间和阻塞lock信息的Shell脚本,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助

    攻略 2021年11月29日
  • golang 如何识别文本格式(golang读取txt文件一次读取一行)

    技术Golang怎么读取单行超长的文本这篇文章主要介绍“Golang怎么读取单行超长的文本”,在日常操作中,相信很多人在Golang怎么读取单行超长的文本问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望

    攻略 2021年12月22日
  • 怎么将PPT文件进行压缩

    技术怎么将PPT文件进行压缩这篇文章给大家分享的是有关怎么将PPT文件进行压缩的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。  操作步骤:  1.点击进入压缩页面,在跳转的页面有五个功能选项,

    攻略 2021年11月1日
  • ​MySQL数据库无法连接怎么办

    技术​MySQL数据库无法连接怎么办本篇内容介绍了“MySQL数据库无法连接怎么办”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学

    攻略 2021年11月19日
  • 用jquery制作最简单登录功能(jquery中能够编辑html内容的方法)

    技术HTML+jQuery如何实现简单的登录页面这篇文章主要介绍“HTML+jQuery如何实现简单的登录页面”,在日常操作中,相信很多人在HTML+jQuery如何实现简单的登录页面问题上存在疑惑,小编查阅了各式资料,

    攻略 2021年12月13日
  • Python中怎么使用Pandas实现数据清洗后的数据整合

    技术Python中怎么使用Pandas实现数据清洗后的数据整合这篇文章主要讲解了“Python中怎么使用Pandas实现数据清洗后的数据整合”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一

    攻略 2021年11月25日