无法使用偏移量从内存中读取值
Unable to read value from memory using offsets
我正在尝试使用 .dll 的基地址 + 偏移量从内存地址中提取值。
我用 Cheat Engine 找到基地址,用 pymem 得到十六进制的基地址。
这是我用来查找基址的代码:
import pymem
pm = pymem.Pymem("PD.exe")
baseAddress = pymem.process.module_from_name(pm.process_handle, "jvm.dll").lpBaseOfDll
print(hex(baseAddress))
#output: 0x51250000
为了读取值,我正在使用 ReadWriteMemory。
from ReadWriteMemory import ReadWriteMemory
rwm = ReadWriteMemory()
process = rwm.get_process_by_id(4372)
process.open()
hp_pointer = process.get_pointer(0x51250000 + 0x0036e654, offsets=[0x28, 0x1d0, 0x26, 0x3a, 0x12])
hp = process.read(hp_pointer)
print(hp)
我使用第一个代码的输出作为基地址并向其添加+0036e654
,但输出始终为0。
如果我在 Cheat Engine 中将“jvm.dll”替换为 51250000,地址仍然可以正确计算。
我从一开始就搞错了。 Cheat Engine中显示的指针偏移量是十六进制值,所以偏移量应该是offsets=[0x40, 0x464, 0x38, 0x58, 0x18]
.
我正在尝试使用 .dll 的基地址 + 偏移量从内存地址中提取值。
我用 Cheat Engine 找到基地址,用 pymem 得到十六进制的基地址。
这是我用来查找基址的代码:
import pymem
pm = pymem.Pymem("PD.exe")
baseAddress = pymem.process.module_from_name(pm.process_handle, "jvm.dll").lpBaseOfDll
print(hex(baseAddress))
#output: 0x51250000
为了读取值,我正在使用 ReadWriteMemory。
from ReadWriteMemory import ReadWriteMemory
rwm = ReadWriteMemory()
process = rwm.get_process_by_id(4372)
process.open()
hp_pointer = process.get_pointer(0x51250000 + 0x0036e654, offsets=[0x28, 0x1d0, 0x26, 0x3a, 0x12])
hp = process.read(hp_pointer)
print(hp)
我使用第一个代码的输出作为基地址并向其添加+0036e654
,但输出始终为0。
如果我在 Cheat Engine 中将“jvm.dll”替换为 51250000,地址仍然可以正确计算。
我从一开始就搞错了。 Cheat Engine中显示的指针偏移量是十六进制值,所以偏移量应该是offsets=[0x40, 0x464, 0x38, 0x58, 0x18]
.