python修改内存

修改内存一共可分为9个步骤

  1. 输入进程

  1. 创建最高权限身份

  1. 找窗口

通过窗口找进程

  1. 使用最高身份进入进程

  1. 加载内核内存

  1. 读取内核中的内存

  1. 给定新值

  1. 修改值

例--修改植物大战僵尸分数

#1.输入进程模块

#process--进程

import win32process

#系统

import win32con

#窗体

import win32gui

#图形界面编辑

import win32api

#ctypes--访问C/C++动态链接

import ctypes

#2.定义进入程序的最高权限

(0x000F0000|0x00100000|0xFFF)是一个常量,标识最高权限打开一个程序;|是位运算符,不是位或;0x是16进制

PROCESS_ALL_ACCESS = (0x000F0000|0x00100000|0xFFF)

#3.找窗体

#使用工具spy

#输入:类,标题

win = win32gui.FindWindow('MainWindow','Plants vs. Zombies GOTY ')

#4.通过窗体找到进程

#hid--隐藏 pid--控制方式

#ThreadProcessId--线程ID

hid,pid = win32process.GetWindowTheardProcessId(win)

#5.以最高权限身份进入进程取到pid

p = win32.api.OpenProcess(PROCESS_ALL_ACCESS,False,pid)

#6.加载内核

#kernel--内核

#kernel.dll--电脑系统中的内核路径

md = ctypes.windll.loadLibrary(r'C:\Windows\System32\kernel32.dll')

#7.从内核中读取进程内存

#使用工具:memsearch,找到目标地址

#定义数据为底层的C语言的长度

#byref--传址

#4--以4字节的方式

data = ctypes.c_long()

md.ReadProcessMemory(int(p),595451192,ctypes.byref(data),4,None)

print('data=',data) #数据被修改后会将新值直接返回data

#8.定义新值

newData = ctype.c_long(30000)

#9.修改旧值

md.WriteProcessMemory(int(p),595451192,ctypes.byref(newData),4,None)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值