能否通过Python手动读取目标程序特定内存地址的数值?
Python实现读取外部程序指定内存数据
完全可以用Python实现,Windows平台下常用pymem库(封装了Windows API,比直接调用pywin32更简洁),具体实现如下:
前置准备
- 安装依赖库:
pip install pymem - 脚本需以管理员权限运行(读取外部进程内存需要系统权限)
- 匹配目标程序与Python解释器的位数(32位Python对应32位进程,64位同理)
代码实现与说明
from pymem import Pymem from pymem.process import module_from_name # 1. 连接目标进程(替换为你的程序进程名,比如"target.exe") pm = Pymem("target.exe") # 2. 获取程序模块基址(对应你说的PE头MZ起始地址0x00CC0000) # 若基址固定,可直接赋值:module = 0x00CC0000 module = module_from_name(pm.process_handle, "target.exe").lpBaseOfDll # 3. 计算指针存储地址,读取指向UI类对象的内存地址 pointer_store_address = module + 841984 # 等价于0x00CC0000 + 841984 = 0x01501984 # 32位进程用read_int,64位进程改用read_longlong address_at_pointer = pm.read_int(pointer_store_address) # 4. 读取指定偏移处的4字节整数 value_434 = pm.read_int(address_at_pointer + 0x434) value_43c = pm.read_int(address_at_pointer + 0x43C) print(f"偏移0x434的值: {value_434}") print(f"偏移0x43C的值: {value_43c}")
关键注意点
- 64位进程场景下,读取指针需用
pm.read_longlong(),因为64位指针占8字节 - 若程序重启后基址可能变化,用
module_from_name动态获取基址比硬编码更可靠 - 若出现权限错误,检查是否以管理员身份启动Python或脚本
- 确保目标进程处于运行状态,否则会抛出进程未找到的异常
内容的提问来源于stack exchange,提问作者Tanner Balk
相关产品推荐
相关产品推荐

