You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 02:35:24