【问题标题】:How is it possible for an application to have static memory addresses?应用程序如何拥有静态内存地址?
【发布时间】:2013-04-16 22:37:44
【问题描述】:

我正在使用称为作弊引擎的内存编辑应用程序。我将作弊引擎附加到游戏中。在我的游戏中,我有一个称为 HP 的 32 位整数。 HP 存储在内存地址 A。如果我重新启动游戏,HP 将存储在新的内存地址 B。似乎使用 Cheat Engine,我可以进行指针扫描并找到一个静态内存地址 C,它总是存储该会话期间 HP 的内存地址。因此,如果我取消对 C 的引用,我总是会得到存储 HP 的内存地址。如何始终保证 C 始终是相同的内存地址?如果另一个应用程序启动并占用该内存区域怎么办?

【问题讨论】:

  • 我不记得足够的细节来发布真正的答案,但我记得一些关于寻址内存相对于进程在内存中的位置的内容。指针不是相对于 RAM 中的第 0 个字节,而是相对于进程开始的位置。

标签: memory-management reverse-engineering memory-editing


【解决方案1】:

我不知道您使用的是什么操作系统,但大多数现代操作系统都为每个进程使用虚拟内存。每个程序的内存地址可以相同。操作系统和计算机将虚拟地址映射到 RAM 中的真实地址。

【讨论】:

  • 以防万一:我使用的是 Windows 8 64 位。
  • 另外,感谢您澄清这一点。这更有意义。不知道存在虚拟内存。
  • HP的地址是相对于进程的虚拟内存块的开始的。
猜你喜欢
  • 1970-01-01
  • 2015-08-05
  • 2014-06-05
  • 1970-01-01
  • 2011-08-16
  • 2021-07-12
  • 2015-01-03
  • 1970-01-01
  • 2011-04-26
相关资源
最近更新 更多