Python外挂-修改内存

前言

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

注意事项

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

思路

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

目的

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

正文

引入所需库

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

import win32gui
import win32process
from pymem import *

第一步:获取窗口句柄

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

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

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

第二步:获取进程ID

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

ThreadId,ProcessId=win32process.GetWindowThreadProcessId(WindowHandle)

第三步:获取进程句柄

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

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

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

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

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

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

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

结果:

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

资源分享:

源码、辅助,更多资源尽在https://www.tbszyw.com

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值