我希望能够插入一个物理地址,并读取存储在该地址的数据。
在Linux下,我会使用/dev/mem
来获取这些数据。在Windows 8下,我不确定有什么机制可以做到这一点。
我的用例是检查PCI Express设备。 PCI Express设备在已知地址创建环形缓冲区,我可以从PCIe BAR确定。设置此地址后,它将不会更改,直到计算机重新启动。
目前,我可以使用像RW Everything这样的应用程序来查看那里的数据,但我希望能够在没有用户交互的情况下(没有GUI)这样做,这样我的环缓冲包装问题就更少了在我可以访问数据之前。
有没有人知道我是否可以从用户空间(例如mmap一个区域)进行特权Windows系统调用,或者我是否需要使用自定义内核模块来执行此操作?我想有一些方法可以在没有自定义内核模块的情况下完成它,因为当我安装RW Everything时,我不相信我安装了一个。
答案 0 :(得分:7)
从Windows Server 2003 SP1开始,用户模式无法访问物理内存。您必须开发一个驱动程序来执行此操作(或查找包含一个驱动程序的第三方工具)。
来自Technet:
在Windows Server 2003 SP1中,不允许用户模式访问\ Device \ PhysicalMemory对象。从用户模式应用程序访问\ Device \ PhysicalMemory对象时,将拒绝所有形式的访问(读取,写入)。无论运行应用程序的用户上下文(管理员,用户,本地系统等)如何,都会拒绝访问\ Device \ PhysicalMemory对象。
答案 1 :(得分:2)
有许多Windows软件可以访问物理内存,但是,由于这些操作系统中的物理内存保护功能,许多Windows软件无法访问Windows Vista或7中的物理内存。
有许多类似于dev / mem unix的windows工具,例如:
查看此Wiki以获取更多信息: http://www.forensicswiki.org/wiki/Tools:Memory_Imaging