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)

相关推荐

  • 阳光型抑郁症,阳光抑郁症是什么

    技术阳光型抑郁症,阳光抑郁症是什么一阳光型抑郁症、什么是“阳光抑郁症”?“阳光抑郁症”就是把自己内心的郁闷、委屈、愤怒等真正的情绪都给隐藏起来,只向人展示自己比较阳光的一面,“表面上以笑脸迎人,症状有“幻想逃离现有环境”

    生活 2021年10月22日
  • Sharding ,分片模式)

    技术Sharding ,分片模式) Sharding (分片模式)Sharding (分片模式)
    副本集可以解决主节点发生故障导致数据丢失或不可用的问题,但遇到需要存储海量数据的情况时,副本集机制就束手

    礼包 2021年11月23日
  • 如何进行MySQL权限提升及安全限制绕过漏洞

    技术如何进行MySQL权限提升及安全限制绕过漏洞这篇文章将为大家详细讲解有关如何进行MySQL权限提升及安全限制绕过漏洞,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。My

    攻略 2021年11月17日
  • php_vld怎么用

    技术php_vld怎么用这篇文章主要为大家展示了“php_vld怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“php_vld怎么用”这篇文章吧。

    攻略 2021年12月10日
  • FP Tree算法原理是什么

    技术FP Tree算法原理是什么FP Tree算法原理是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Apriori算法是挖掘频繁项集的经典算法,需要多

    攻略 2021年12月3日
  • 书写高质量SQL的30条建议分别是哪些

    技术书写高质量SQL的30条建议分别是哪些书写高质量SQL的30条建议分别是哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。前言小编将结合实例demo,阐

    攻略 2021年11月30日