当前位置:   article > 正文

Python外挂-修改内存_python修改游戏内存

python修改游戏内存

前言

一谈到外挂,网上都是易语言和C++的教程,python对挂的教程太少了,几乎无,而且杂七杂八,拿下来用还不一定运行成功,如今python兴起,库的支持也变得极为广泛,这里我以CE自带教程的第二关讲解一下如何用Python修改内存数据通过第二关。玩过CE自带教程的看了这篇文章可能会说我小题大做了,如果只是为了自己修改数据自己玩,确实是小题大做了,但这篇文章的目的主要是让大家明白PyThon是如何一步一步做到修改内存的。

注意事项

PyCharm一定要用管理员身份运行!!!

思路

修改一个游戏数据,无非就是找到数据所在内存区域,然后修改即可,这是简单的理解。但通过一个程序去完成这个任务还是比较复杂的,下面看步骤。

目的

我们的目的很明确,如前言所说,CE教程第二关这里只有将健康值修改为1000,才能点击下一步以完成通关。

正文

引入所需库

操作内存就要动用windowsAPI,使用WindowsAPI可以联合Ctypes库去操作,但是Python如今自己对WindowsAPI的操作库封装的也比较完善,我们用最简单的即可->封装了WindowsAPI的内存相关的pymem库

  1. import win32gui
  2. import win32process
  3. from pymem import *

第一步:获取窗口句柄

FindWindow(窗口的类名,窗口标题),返回值为窗口的句柄,窗口的类名和标题可以通过工具Spy++查看,非常简单,这里不赘述。如下的第一个参数填写None也可以。

语句解释:通过窗口的类名和窗口标题获取到窗口句柄。

WindowHandle=win32gui.FindWindow("Window","Tutorial-i386")

第二步:获取进程ID

语句解释:通过窗口句柄获取到进程信息,这里返回值有两个,我们主要用到进程ID,即ProcessId

ThreadId,ProcessId=win32process.GetWindowThreadProcessId(WindowHandle)

第三步:获取进程句柄

前两步的目的主要是为了获取到进程句柄。

语句解释:通过进程ID和自定义的权限获取到进程句柄,如下的PROCESS_ALL_ACCESS是在定义进入进程的最高权限,就好比有些软件的功能必须要通过管理员方式才能运行

  1. PROCESS_ALL_ACCESS = (0x000F0000|0x00100000|0xFFF)
  2. ProcessHandle=pymem.process.open(ProcessId,True,PROCESS_ALL_ACCESS)

第四步:通过数据地址和偏移修改值

我们通过CE找到健康值的 基地址为0x00656650,偏移了一次且偏移量为0x4b0

提示:在内存相关的外挂中,最难的不是写程序,而是用CE和其他工具找一个数据的基地址和偏移量,关于CE如何找基地址及其偏移,网上教程多,这里主要分享Python操作内存的写法

  1. BaseAddress=0x00656650
  2. offset=0x4b0
  3. #读取基地址指向的值
  4. baseVal=pymem.memory.read_int(ProcessHandle,BaseAddress)
  5. #向基地址指向值+偏移量写入数据1000
  6. pymem.memory.write_int(ProcessHandle,baseVal+offset,1000)
  7. #关闭进程句柄
  8. pymem.process.close_handle(ProcessHandle)

结果:

如图,运行python程序后,CE教程第二关的数据被我们改为了1000,下一步也变为可点击状态,至此第二关通过。

一起学习:

Q群:307531422

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/934295
推荐阅读
相关标签
  

闽ICP备14008679号