微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

具有偏移量的偏移量的读写存储器多级指针

如何解决具有偏移量的偏移量的读写存储器多级指针

from ReadWriteMemory import ReadWriteMemory

rwm = ReadWriteMemory()

process = rwm.get_process_by_name('AoE2DE_s.exe')
process.open()

villagerPointer = process.get_pointer('AoE2DE_s.exe+2BFCA10',offsets=[0x18,0x4*0x2+0x9228])

villagerCount = process.read(villagerPointer)

print (villagerCount)

总是返回0,但应该返回119。使用作弊引擎来查找指针和偏移量,但是不能在Python中复制它。超级沮丧,我什么都没做。

Pointer

解决方法

您正在将字符串值'AoE2DE_s.exe+2BFCA10'传递到get_pointer(),但是根据您使用的库的source code,这显然不是有效的输入。您必须实际传递该地址的十六进制值。因此,我首先要获取.exe的基地址,然后添加该十六进制值,但是同样,您最终只需要将一个十六进制地址传递给read()get_pointer()

之所以没有出现任何错误,仅仅是因为该库没有进行太多的输入验证。因此,“垃圾进,垃圾出”的概念适用。

编辑:根据该库的源代码,似乎无法获取进程的基地址。

但是,您可以通过绕过库并通过this method自己来获得基址。然后,一旦有了基址的十六进制值,就可以简单地向其添加一个偏移量,然后使用RWM的read()get_pointer()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。