【问题标题】:Is it possible to write to any memory address in Windows是否可以写入 Windows 中的任何内存地址
【发布时间】:2017-09-23 14:07:08
【问题描述】:

在 C++ 中,我想创建一个程序,它可以访问和写入任何物理内存地址,而不管该地址被什么使用,包括 Windows 内核模式程序。是否有可能创建这样的程序,可以写入任何内存地址,例如 0x00,而不受 Windows 操作系统内存权限限制?显然该程序不能是用户模式程序,所以如果我将程序提升为管理员,我可以这样做吗?还是我需要写一个驱动?

【问题讨论】:

  • “内存地址”是什么意思?进程特定的虚拟地址、系统范围的虚拟地址还是物理内存地址?
  • 物理内存地址
  • 设备驱动程序可以写入物理内存地址。但请注意,物理内存页面可能会转储到页面文件中,反之亦然,并且通常物理内存页面不会绑定到特定的应用程序/驱动程序。
  • 顺便说一句,以管理员身份运行的用户模式程序仍然是用户模式程序。

标签: c++ windows


【解决方案1】:

您需要编写一个驱动程序。常规程序,即使以管理员身份运行,也无法写入任意内存地址。事实上,他们甚至无法访问任意物理地址。

【讨论】:

  • 内核模式下的驱动程序能否覆盖对 Windows 至关重要的其他内核模式程序的物理内存?
  • 是的,如果您设法进入内核模式,您可以随意使用系统。
猜你喜欢
  • 2020-07-30
  • 2016-11-25
  • 1970-01-01
  • 1970-01-01
  • 2016-10-06
  • 1970-01-01
  • 2012-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多