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月26日
  • jquery怎么增加一行tr

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

    攻略 2021年11月16日
  • 沐浴露能洗头吗,用沐浴露洗头发会有什么影响吗

    技术沐浴露能洗头吗,用沐浴露洗头发会有什么影响吗洗澡时误将沐浴露当洗发水洗头的事沐浴露能洗头吗,相信不少同学们都遇到过吧。那么,用沐浴露洗头会造成哪些危害呢?首先,洗发水和沐浴露的主体成分是相同的,唯一的区别是洗发水里添

    生活 2021年10月22日
  • 小雪诗句,描写小雪节气古诗词有哪些

    技术小雪诗句,描写小雪节气古诗词有哪些初寒 (作者小雪诗句:陆游) 久雨重阳後,清寒小雪前。 拾薪椎髻仆,卖菜掘头船。 薄米全家粥,空床故物毡。 身犹付一歃,名字更须传? 小雪日戏题绝句 (作者:张登) 甲子徒推小雪天,

    生活 2021年10月28日
  • centos7.6安装mysql(mysql5.6下载)

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

    攻略 2021年12月25日
  • 软工实践个人总结,测评组)

    技术软工实践个人总结,测评组) 软工实践个人总结(测评组)软工实践个人总结(测评组)
    一、基本情况
    (1.1)请回望第一次作业,你对于软件工程课程的想象
    对比开篇博客你对课程目标和期待,“希望通过实践锻

    礼包 2021年12月22日