【问题标题】:Read physical memory under Windows 8Windows 8下读取物理内存
【发布时间】:2014-05-15 16:19:46
【问题描述】:

我希望能够插入一个物理地址,并读取存储在该地址的数据。

在 Linux 下,我会使用 /dev/mem 来获取这些数据。在 Windows 8 下,我不确定有什么机制可以做到这一点。

我的用例是检查 PCI Express 设备。 PCI Express 设备在已知地址创建一个环形缓冲区,我可以从 PCIe BAR 确定该地址。一旦设置了这个地址,在计算机重新启动之前它不会改变。

目前,我可以使用RW Everything 之类的应用程序来查看那里的数据,但我希望能够在没有用户交互(没有 GUI)的情况下执行此操作,这样我在循环缓冲区包装之前遇到的问题更少可以访问数据。

有谁知道我是否可以从用户空间进行特权 Windows 系统调用(例如,映射一个区域)或者我是否需要使用自定义内核模块来执行此操作?我想有一些方法可以在没有自定义内核模块的情况下做到这一点,因为我不相信我在安装 RW Everything 时安装了一个。

【问题讨论】:

  • @AndrewMedico:除了一件事。该用户的实际目标是读取进程的内存。所以他必须处理虚拟内存和所有相关的事情。我不需要那个。我要访问的内存被锁定了。
  • 您需要一个内核驱动程序(以及安装它的管理员权限),例如 WinIO,可在此处找到:internals.com(附源代码)。如果您只需要读取 SMBIOS 数据(在您的 PCI 情况下),它在此处的注册表中映射:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mssmbios\Data 可能就足够了,或者您也可以使用 WMI 或 Windows API: msdn.microsoft.com/en-us/library/windows/desktop/…

标签: windows


【解决方案1】:

自 Windows Server 2003 SP1 起,用户模式无法访问物理内存。您必须开发驱动程序才能执行此操作(或找到包含该驱动程序的第三方工具)。

来自Technet

在 Windows Server 2003 SP1 中,不允许用户模式访问 \Device\PhysicalMemory 对象。当从用户模式应用程序访问 \Device\PhysicalMemory 对象时,所有形式的访问(读取、写入)都会被拒绝。无论应用程序在何种用户上下文(管理员、用户、本地系统等)中运行,都拒绝访问 \Device\PhysicalMemory 对象。

【讨论】:

  • 感谢您提供令人沮丧但正确的答案。我已经开始使用 WinIO(按照 Simon Mourier 的建议)来提供内核驱动程序来完成这项工作。
【解决方案2】:

有很多windows软件可以访问物理内存,但是在windows vista或7中,由于这些操作系统的物理内存保护功能,很多软件都无法访问物理内存。

windows工具有很多类似于dev/mem unix的工具,比如:

  • Belkasoft Live RAM Caputer
  • WindowsSCOPE Pro 和 Ultimate,可在 http://www.windowsscope.com 购买
  • WindowsSCOPE Live
  • winen.exe(指导软件 - 包含在 Encase 6.11 及更高版本中)
  • Mdd(内存 DD)(ManTech)
  • MANDIANT Memoryze
  • Kntdd
  • 月溶胶
  • HBGary
  • FTK 成像仪
  • 操作系统取证
  • WinPmem;和
  • Windows 内存读取器

查看此 wiki 了解更多信息: http://www.forensicswiki.org/wiki/Tools:Memory_Imaging

【讨论】:

    猜你喜欢
    • 2018-05-07
    • 1970-01-01
    • 2020-05-18
    • 2013-04-09
    • 1970-01-01
    • 2015-05-28
    • 1970-01-01
    • 1970-01-01
    • 2012-01-14
    相关资源
    最近更新 更多