在 Windows 上如何直接从物理内存读取?

2023-12-22

在C或C++(Windows)中,如何通过给出物理(非虚拟)地址来读取RAM? 这意味着无需通过虚拟内存系统(mmu 表),并且特定于一个进程。

我已经知道 APIReadProcessMemory http://msdn.microsoft.com/en-us/library/windows/desktop/ms680553.aspx,它从 ram 读取(大多数训练者使用),但它仅适用于特定进程。

我在MSDN上搜索了一下,发现设备\物理内存 http://technet.microsoft.com/en-us/library/cc787565.aspx似乎给出了这种可能性,但我没有找到实际的例子,而且这个功能似乎已经被Windows服务包关闭了(为了修复一些漏洞)。

我知道这是可能的,因为 WinHex 可以做到这一点(如果你选择“工具”>“打开内存”>“物理内存”)。然后它将显示从 0x00000000 到 your_ram_size 的 RAM 内容,就像打开传统文件时一样。它需要管理员权限,但无需安装驱动程序(这意味着 WinHex 从用户模式进行)。

编辑:添加有关操作系统的信息。


您必须编写内核模式驱动程序并使用内存管理器函数将物理内存范围映射到内核驱动程序的系统空间,然后将功能导出到用户 API 或驱动程序。

在 Windows 98 之后,大多数情况下不可能从用户模式访问物理内存。正如其他人所说,这样任何旧程序都不能破坏人们的计算机。您必须编写一个内核驱动程序,只有在签名并首先加载到窗口存储中后才能安装该驱动程序。仅此一个过程就不像链接 DLL 那样简单。

总之MmAllocateContiguousMemory()是一个 Windows 内核模式函数,它将连续的物理内存映射到系统内存,并且是ntoskrnl.exe.

此外,您无法从用户模式应用程序调用这些 API。只有司机才能使用它们。如果没有驱动程序的帮助,用户模式应用程序无法访问物理内存。驱动程序可以处理来自用户 API 的请求,也可以使用 IOCTL 并将其资源映射到用户程序虚拟内存。无论哪种方式,您都需要驱动程序的帮助,该驱动程序必须由即插即用管理器安装。 PnP 必须选择通过硬件激活(即热插拔)或某些其他方法(例如始终打开的总线驱动程序)自行安装驱动程序。

另外的窗口随机分配虚拟地址,因此不容易辨别任何模式或算出其物理位置。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Windows 上如何直接从物理内存读取? 的相关文章

  • 使用具有现有访问令牌的 Google API .NET 客户端

    用例如下 移动应用程序正在通过 Google 对用户进行身份验证 并且在某些时候 我们需要将用户的视频发布到他的 YouTube 帐户 出于实际原因 实际发布应该由后端完成 已经存储在那里的大文件 由于用户已经通过应用程序的身份验证 因此应
  • 如何创建可以像 UserControl 一样编辑的 TabPage 子类?

    我想创建一个包含一些控件的 TabPage 子类 并且我想通过设计器来控制这些控件的布局和属性 但是 如果我在设计器中打开子类 我将无法像在 UserControl 上那样定位它们 我不想创建一个带有 UserControl 实例的 Tab
  • 从 MVC 迁移到 ASP.NET Core 3.1 中的端点路由时,具有角色的 AuthorizeAttribute 不起作用

    我正在尝试将我的项目从 UseMVC asp net core 2 2 兼容样式 升级到 UseEndpoint Routing 并且我的所有请求都被重定向到我的验证失败页面 它与声明有关 如果我删除 Authorize Roles Adm
  • Clang 编译器 (x86):80 位长双精度

    我正在尝试在 x86 Windows 平台上使用本机 80 位长双精度 海湾合作委员会选项 mlong double 80 https gcc gnu org onlinedocs gcc x86 Options html似乎不适用于 cl
  • C++ 异步线程同时运行

    我是 C 11 中线程的新手 我有两个线程 我想让它们同时启动 我可以想到两种方法 如下 然而 似乎它们都没有按照我的预期工作 他们在启动另一个线程之前启动一个线程 任何提示将不胜感激 另一个问题是我正在研究线程队列 所以我会有两个消费者和
  • 如何配置 WebService 返回 ArrayList 而不是 Array?

    我有一个在 jax ws 上实现的 java Web 服务 此 Web 服务返回用户的通用列表 它运行得很好 Stateless name AdminToolSessionEJB RemoteBinding jndiBinding Admi
  • 访问者和模板化虚拟方法

    在一个典型的实现中Visitor模式 该类必须考虑基类的所有变体 后代 在许多情况下 访问者中的相同方法内容应用于不同的方法 在这种情况下 模板化的虚拟方法是理想的选择 但目前这是不允许的 那么 模板化方法可以用来解析父类的虚方法吗 鉴于
  • ASP MVC:服务应该返回 IQueryable 的吗?

    你怎么认为 你的 DAO 应该返回一个 IQueryable 以便在你的控制器中使用它吗 不 您的控制器根本不应该处理任何复杂的逻辑 保持苗条身材 模型 而不是 DAO 应该将控制器返回给视图所需的所有内容 我认为在控制器类中看到查询 甚至
  • 如何识别 WPF 文本框中的 ValidationError 工具提示位置

    我添加了一个箭头来指示工具提示中的文本框 当文本框远离屏幕边缘时 这非常有效 但是当它靠近屏幕边缘时 工具提示位置发生变化 箭头显示在左侧 Here is the Image Correct as expected since TextBo
  • 在 2D 中将一个点旋转另一个点

    我想知道当一个点相对于另一个点旋转一定角度时如何计算出新的坐标 我有一个块箭头 想要将其相对于箭头底部中间的点旋转角度 theta 这是允许我在两个屏幕控件之间绘制多边形所必需的 我无法使用和旋转图像 从我到目前为止所考虑的情况来看 使问题
  • C# 中条件编译符号的编译时检查(参见示例)?

    在 C C 中你可以这样做 define IN USE 1 define NOT IN USE 1 define USING system 1 system 1 IN USE 进而 define MY SYSTEM IN USE if US
  • 生产代码中的 LRU 实现

    我有一些 C 代码 需要使用 LRU 技术实现缓存替换 目前我知道两种实现LRU缓存替换的方法 每次访问缓存数据时使用时间戳 最后比较替换时的时间戳 使用缓存项的堆栈 如果最近访问过它们 则将它们移动到顶部 因此最后底部将包含 LRU 候选
  • 当“int”处于最大值并使用 postfix ++ 进行测试时,代码定义良好吗?

    示例 未定义行为的一个示例是整数溢出的行为 C11dr 3 4 3 3 int溢出是未定义的行为 但这是否适用于存在循环的以下内容 并且不使用现在超出范围的副作用i 特别是 这是否后缀增量规格帮助 结果的值计算在副作用之前排序 更新操作数的
  • 尚未处理时调用 Form 的 Invoke 时出现 ObjectDisposeException

    我们得到一个ObjectDisposedException从一个电话到Invoke在尚未处理的表格上 这是一些演示该问题的示例代码 public partial class Form2 Form void Form2 Load object
  • g++ 对于看似不相关的变量“警告:迭代...调用未定义的行为”

    考虑以下代码strange cpp include
  • 将代码拆分为标头/源文件

    我从 Asio 的示例页面中获取了以下代码 class tcp connection public boost enable shared from this
  • 是否可以有一个 out ParameterExpression?

    我想定义一个 Lambda 表达式out范围 有可能做到吗 下面是我尝试过的 C Net 4 0 控制台应用程序的代码片段 正如您在 procedure25 中看到的 我可以使用 lambda 表达式来定义具有输出参数的委托 但是 当我想使
  • 什么是 __declspec 以及何时需要使用它?

    我见过这样的例子 declspec在我正在阅读的代码中 它是什么 我什么时候需要使用这个构造 这是 Microsoft 对 C 语言的特定扩展 它允许您使用存储类信息来赋予类型或函数属性 文档 declspec C https learn
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没
  • Googletest:如何异步运行测试?

    考虑到一个包含数千个测试的大型项目 其中一些测试需要几分钟才能完成 如果按顺序执行 整套测试需要一个多小时才能完成 通过并行执行测试可以减少测试时间 据我所知 没有办法直接从 googletest mock 做到这一点 就像 async选项

随机推荐

  • MySQL插入多个表(关系型)

    tbl product Name Creator UID Salerank tbl price Supplier Price UID 我想插入一个产品 然后将多个价格插入到一个单独的表中 如何确保两个表具有相同的 UID 最好是自动增量字段
  • BLL、DAL、BO、插入数据

    我需要你的建议 我正在尝试在 ASP NET 中开发一个 3 层架构 将 BBL DAL BOboj 分开 在 DAL 内部 我通过 view 收集数据 我想知道 我应该为每个视图编写另一个 BOboj 吗 我已经有一个 BOboj 类 但
  • 计算行之间的日期差异

    我有一个 data table 我想在其中标记给定组 ID 的先前条目 90 天内的条目 背景是这些是交易的买入信号 所以我不希望在 90 天的窗口内重复 因为我假设我持有该头寸 90 天 因此已经购买了一个头寸 并且我不想重新启动时钟 所
  • 在Python中从列表中获取N个最小或最大元素的快速方法

    我目前有一个很长的列表 正在使用 lambda 函数 f 进行排序 然后我从前五个元素中选择一个随机元素 就像是 f lambda x some function of x local variable my list sort key f
  • opencv中的视频文件

    我想读取视频文件 avi 或 mov 并使用 Opencv 检测运动和边缘 你能帮我编写代码吗 我想创建一个 GUI 在其中我们可以选择视频文件 然后我们可以进行图像处理opencv中的函数 如何读取视频文件 读取视频文件并将其显示在窗口上
  • Android 相机预览旋转

    根据 Android 开发者网站 android 2 2之后有这个功能 设置显示方向 调整相机预览旋转 并且根据Android开发者网站 我们可以找到以下源代码 android hardware Camera CameraInfo info
  • 初始化锯齿状数组

    我想在 C 中创建数组 10 10 10int not int 我可以写代码 int count new int 10 for int i 0 i lt 10 i count i new int 10 for int j 0 j lt 10
  • JavaScript:检查 CTRL 按钮是否被按下

    I need to check if the CTRL button was pressed while I am clicking on a control on my html page using JavaScript 我怎样才能做到
  • 以平滑的结果对 CSS 背景位置进行动画处理(子像素动画)

    我正在尝试缓慢地为 div 的背景位置设置动画 但不会出现不稳定的运动 您可以在这里看到我当前努力的结果 http jsfiddle net 5pVr4 2 http jsfiddle net 5pVr4 2 webkit keyframe
  • CoffeeScript:在函数调用中扩展数组

    在 Ruby 中 我可以调用使用数组元素作为位置参数的方法 如下所示 method fixed arg1 fixed arg2 array of additional args 这里的 运算符将数组扩展到位 我试图在 CoffeeScrip
  • Intellij IDEA 找到匹配的标记

    是否有快捷方式或我可以单击以查找标记标签的匹配标签并将焦点 光标移至那里 例如 p span span p div div 如果我的光标位于结束位置标签 我希望 IDEA 带我去参加开幕式 tag Ctrl goes to the open
  • Google 地图:DirectionService 返回 OVER_QUERY_LIMIT 响应

    我正在使用 google maps DirectionsService 来获取两点之间的路线 该代码在过去 8 个月内一直有效 但是 从过去的几天来看 DirectionService 路由调用返回 OVER QUERY LIMIT 响应状
  • jQuery 选择器中允许使用哪些字符?

    我正在使用 jQuery 平滑滚动到我网站上的某些锚点 锚点是以编程方式创建的 因此它们可以包含一些德语变音符号 例如 或其他 unicode 字符 例如 等 该函数使用哈希来选择哈希所引用的元素 Smooth scroll to anch
  • 哪一行的值最高?

    我有多个提名人和民意调查的选举结果表 我需要确定每次民意调查中哪位提名人获得最多票数 以下是表中数据的示例 PollID NomineeID Votes 1 1 108 1 2 145 1 3 4 2 1 10 2 2 41 2 3 0 我
  • Android ListView 子视图 setEnabled() 和 setClickable() 不执行任何操作

    我正在做一些AsyncTask用户单击我的项目后工作ListView 我想禁用该项目 这样它就不能被单击两次 我已经简化了单击侦听器以仅包含此方法 但它仍然对我没有任何作用 视图看起来相同 并且它让自己再次被愉快地单击 这让我很烦恼 pub
  • 如何在 Swift 中传递和获取多个 URL QueryItem?

    好的 我正在 iMessage 应用程序中工作 并尝试从此处所选消息中解析超过 1 个 url 查询项 我已成功在查询中获取 发送 1 个值 override func willBecomeActive with conversation
  • 使用 Boost.regex 从目录打印 .pdf 文件名

    这是我的代码 path Path e Documents boost regex reg pdf for recursive directory iterator it Path it recursive directory iterato
  • 在Python中对pandas中的数据框进行分箱[重复]

    这个问题在这里已经有答案了 给定 pandas 中的以下数据框 import numpy as np df pandas DataFrame a np random random 100 b np random random 100 id
  • 如果使用 $dirty 和 $pristine 对表单进行任何更改,则不允许进行导航

    如果任何表单发生更改 我会尝试停止在我的应用程序上导航 并尝试在不保存更改的情况下进行导航 我想显示一个对话框来显示是否保存导航或放弃或取消导航操作 我正在使用角度用户界面路由 https github com angular ui ui
  • 在 Windows 上如何直接从物理内存读取?

    在C或C Windows 中 如何通过给出物理 非虚拟 地址来读取RAM 这意味着无需通过虚拟内存系统 mmu 表 并且特定于一个进程 我已经知道 APIReadProcessMemory http msdn microsoft com e