【问题标题】:Unable to read value from memory using offsets无法使用偏移量从内存中读取值
【发布时间】:2021-10-13 09:14:37
【问题描述】:

我正在尝试使用 .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。

如果我在作弊引擎中将“jvm.dll”替换为 51250000,地址仍然可以正确计算。

【问题讨论】:

    标签: python cheat-engine


    【解决方案1】:

    我从一开始就搞错了。作弊引擎中显示的指针偏移量是十六进制值,所以偏移量应该是offsets=[0x40, 0x464, 0x38, 0x58, 0x18]

    【讨论】:

    • 这能解决您的问题吗?如果是这样,您应该将此标记为正确答案。如果没有,您应该编辑原始问题以包含这些新信息。
    • 可以,但我只能在明天将其标记为答案
    猜你喜欢
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    相关资源
    最近更新 更多