无法使用偏移量从内存中读取值

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].