读取64位程序内存时遇OverflowError:整数过长无法转换求助
解决ReadProcessMemory报错OverflowError:int too long to convert
问题原因
你在32位Python环境中尝试读取64位进程(Tutorial-x86_64.exe)的内存地址,64位地址超出了32位整数的取值范围,导致ctypes无法完成地址转换,触发OverflowError。
解决方案
1. 切换到64位Python
- 卸载当前32位Python,下载并安装对应版本的64位Python。
- 重新安装依赖库:
pip uninstall ReadWriteMemory pip install ReadWriteMemory
2. 自动获取进程基地址(避免硬编码错误)
手动计算的0x100000000+0x00325A70不可靠,64位程序启用ASLR(地址空间布局随机化)后,基地址会动态变化,应该通过进程对象的base_address属性自动获取:
from ReadWriteMemory import ReadWriteMemory rwm = ReadWriteMemory() process = rwm.get_process_by_name("Tutorial-x86_64.exe") process.open() # 自动获取基地址 + 偏移 baseaddress = process.base_address + 0x00325A70 pointer = process.get_pointer(baseaddress, offsets = [0x598, 0x28, 0x8, 0xF8, 0x18, 0x18, 0x7F8]) print(process.read(pointer))
3. 验证偏移链的正确性
用Cheat Engine等工具重新确认基地址和偏移链是否正确:
- 附加到Tutorial-x86_64.exe,找到目标内存地址的偏移链
- 确保每一层偏移都对应64位内存地址的读取
内容的提问来源于stack exchange,提问作者cool
相关产品推荐
相关产品推荐

