Windows 进程的内存映射是什么样的?

2024-02-04

这可能是一个重复的问题。我想知道windows进程的内存映射是什么样的?我正在寻找细节。请提供博客、文章和其他相关文献的链接。


我总是喜欢能够真正看到事物,而不仅仅是阅读理论。事实证明,根据这篇博文 http://www.nynaeve.net/?p=88,如果您使用 Windbg 打开一个程序,即使它没有运行,它仍然会像运行时一样映射到地址空间。因此,您的反汇编窗口象征性地(不保证在这些确切的地址加载您的代码)以代码形式向您显示这些地址中的内容:

当然,由于 ASLR,您无法保证这些地址,但它给您一个想法/让您思考:内存地址也只是代码。代码和内存存储在同一(虚拟)空间中,按照冯·诺依曼 http://en.wikipedia.org/wiki/Von_Neumann_architecture大多数现代计算机实现的体系结构。不幸的是,由于没有堆栈、堆等,你无法移动并查看它们。

This 来自微软的博客文章 https://techcommunity.microsoft.com/t5/ask-the-performance-team/memory-management-x86-virtual-address-space/ba-p/372536为您提供虚拟地址空间的高级概述。正如您所看到的,其中一半保留供操作系统使用,另一半您可以填写您拥有的任何内容(代码,malloc调用、堆栈分配等)。

就地址空间在用户端的工作方式而言,这个图 http://www.cs.uleth.ca/~holzmann/C/system/memorylayout.gif帮助我理解了它。已链接在这个问题中 https://stackoverflow.com/questions/1966920/more-info-on-memory-layout-of-an-executable-program-process它提供了一系列关于各种可能的地图的不错的链接。但请记住,内存中的布局会因部件而异。

要记住的重要一点是,所有这些,程序,数据,堆栈,堆,内核的东西,都是一个大的连续的内存地址系列,尽管它们实际上可能会或可能不会转换为实际的内存地址。

当您使用它时,您可能还会对可执行文件在磁盘上的显示方式感兴趣。本文 http://msdn.microsoft.com/en-us/magazine/ms809762.aspx and 这篇文章特别 http://msdn.microsoft.com/en-us/magazine/cc301805.aspx提供对PE文件格式的一些深入分析。后一篇文章还有一个小图表,大致显示了数据是如何进行 mmap 的。

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

Windows 进程的内存映射是什么样的? 的相关文章

  • 以编程方式获取 Android 设备的所有 RAM 内存,而不仅仅是分配给用户进程的内存

    我有一台设备 我确信它的 RAM 内存为 512 MB 希望能够以编程方式检索该值 512 MB 到目前为止 我在互联网上遇到的主要是这两种方式 https stackoverflow com a 16143065 1521264 http
  • 在 Jenkins 中执行批处理文件

    我有一个简单的批处理文件 我想要从 Jenkins 调用 运行 执行该文件 Jenkins 中有同样的插件吗 如何从 Jenkins 执行批处理文件 如果有相同的教程或文档 无需为此添加新插件 在Jenkins 选择您的工作名称并转到配置部
  • 为什么我的文件路径中出现 Unicode 转义的语法错误? [复制]

    这个问题在这里已经有答案了 我想要访问的文件夹名为 python 位于我的桌面上 当我尝试访问它时出现以下错误 gt gt gt os chdir C Users expoperialed Desktop Python SyntaxErro
  • R 脚本自动化时的不同结果

    以下命令对 pdf 文件执行 Ghostscript 这pdf file变量包含该 pdf 的路径 bbox lt system paste C gs gs8 64 bin gswin32c exe sDEVICE bbox dNOPAUS
  • 批处理文件 FOR /f 标记

    任何人都可以逐行准确解释以下代码是如何工作的 我真的迷路了 我一直在尝试学习如何使用 FOR 命令 但我不明白这一点 echo off for f tokens delims f in myfile do set line f call p
  • 以编程方式最小化/恢复窗口,跳过动画效果

    我需要对窗口列表执行多项操作 最小化其中一些 恢复其他 以便立即在两组或多组窗口之间切换 这样做的问题是最小化和恢复窗口时可以看到的动画 整个过程看起来很糟糕 所有这些动画都进进出出 上下移动 但是 我无法禁用这些动画 因为这是针对其他计算
  • 代码退出-1073741515 (0xc0000135)“未找到依赖的 dll”

    我正在尝试编写一个简单的程序 与 2019 年相比 Windows 10 64 位 调试 gt x64 遵循 将 Visual C 项目配置为面向 64 位平台 1 include
  • 如何在 C++ 中急于提交分配的内存?

    总体情况 带宽 CPU 使用率和 GPU 使用率都极其密集的应用程序需要每秒从一个 GPU 向另一个 GPU 传输约 10 15GB 的数据 它使用 DX11 API 来访问 GPU 因此上传到 GPU 只能在每次上传都需要映射的缓冲区中进
  • 移动/调整窗口大小时闪烁

    我开发了一个显示 jpeg 图像的应用程序 它可以显示 4 个图像 屏幕的每个象限各一个 为此 它使用了 4 个窗口 窗口没有边框 框架 也没有标题栏 当加载新图像时 窗口大小会根据新图像进行调整 然后显示该图像 尤其是当窗户做得较大时 经
  • 如何使用命令行压缩文件?

    我想使用批处理文件命令 Windows XP 批处理文件 压缩目录 例如 如果我想解压缩一个文件意味着我可以使用jar xf file zip java bat 文件命令 就像我想要一个命令行批处理来压缩目录一样 如果您使用的是 Ubunt
  • Vim 在 Mingw 上表现异常

    我在 MinGW 4 6 2 上的 Vim 表现得很奇怪 例如 在插入模式下按 Backspace 会删除字符 但我必须用箭头键移动光标才能删除的字符消失 而且它也会使我退出插入模式 另一个例子 按 Del 删除字符有时会生成奇怪的字符 例
  • BASIC 中的 C 语言中的 PeekInt、PokeInt、Peek、Poke 等效项

    我想知道该命令的等效项是什么Peek and Poke 基本和其他变体 用 C 语言 类似PeekInt PokeInt 整数 涉及内存条的东西 我知道在 C 语言中有很多方法可以做到这一点 我正在尝试将基本程序移植到 C 语言 这只是使用
  • 需要 TensorFlow 依赖项。如何在 Windows 上运行 TensorFlow

    我有兴趣让 TensorFlow 在 Windows 上运行 但目前我意识到这是不可能的 因为某些依赖项无法在 Windows 上使用 例如巴泽尔 之所以出现这种需求 是因为据我目前了解 从 TensorFlow 访问 GPU 的唯一方法是
  • 游戏内的java.awt.Robot?

    我正在尝试使用下面的代码来模拟击键 当我打开记事本时 它工作正常 但当我打开我想使用它的游戏时 它没有执行任何操作 所以按键似乎不起作用 我尝试模拟鼠标移动和点击 这些动作确实有效 有谁知道如何解决这个问题 我发现这个问题 如何在游戏中使用
  • 如何从Windows阻止社交媒体[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我想根据时间阻止我的电脑上的社交媒体 晚上 9 点后屏蔽 上午 11 点后解锁 如家长控制 我尝试过关注但失败了 创建了
  • Windows 窗口对接

    我想知道如何在 Windows 中将窗口停靠 捕捉到屏幕的一侧 最好使用直接的 Win32 API 我正在寻找的效果就像任务栏 一个在屏幕上有保留空间的窗口 因此最大化另一个窗口会使该窗口占据屏幕的其余部分 但使我的窗口保持在适当的位置并可
  • 不在焦点时响应键盘? (C#、Vista)

    我正在尝试编写一个应用程序 只要按下 Shift 键 无论当前哪个应用程序具有焦点 它都会做出响应 我尝试过这个SetWindowsHookEx 与GetKeyboardState 但这两种方法仅在应用程序窗口具有焦点时才有效 我需要它在全
  • 在哪里可以获得 PHP 5.3+ 的 runkit DLL 扩展?

    这是一个简单的问题 我在哪里可以获得 PHP 5 3 版本的 runkit 扩展 它的手册 http php net manual en book runkit php http php net manual en book runkit
  • teracopy 如何替换默认的 Windows 副本

    我问了这个问题Windows 文件复制内部结构 动态加密 https stackoverflow com questions 24220382 windows file copy internals on the fly encryptio
  • 如何实现仅当可用内存较低时才将数据交换到磁盘的写缓存

    我想将应用程序生成的数据缓存在内存中 但如果内存变得稀缺 我想将数据交换到磁盘 理想情况下 我希望虚拟机通知它需要内存并将我的数据写入磁盘并以这种方式释放一些内存 但我没有看到任何方法以通知我的方式将自己挂接到虚拟机中before an O

随机推荐

  • 如何将联系人从电话簿导入到我们的应用程序

    我正在开发Android应用程序 当用户单击按钮时 它应该在表格中显示电话簿中的所有联系人 我该如何实现它 任何人都可以帮助我 提前致谢 如果您查询联系人合同 联系人 http developer android com reference
  • C++ 中通过引用传递对象

    通常的方法是通过引用传递变量在C 也是C 中如下 void someFunction dataType name dataType e g int char float etc definition int main dataType v
  • 如何使用谷歌地图 API 将邮政编码转换为地理位置(纬度和经度)?

    我只想使用邮政编码和 Google 地图 API 获取纬度和经度 我正在使用 PHP 进行开发 我怎样才能做到这一点 邮政编码可以来自世界任何地方 您可以使用谷歌地图地理编码 API 来完成此操作 请查找下面的示例 但要更正纬度 经度和地址
  • 如何使用 gulp + browsersync 来运行 apache 虚拟主机?

    我想将 gulp sass 和 browsersync 添加到我的工具包中 我现在正在运行 gulp 并配置了 sass 和 browsersync 任务 我正在为本地 apache 服务器上的虚拟主机运行的 php 应用程序进行剥皮 我正
  • 如何将数据 POST 到另一个 Web 应用程序(跨域)

    请考虑以下场景 有两个 Web 应用程序 App1 和 App2 用户可以通过表单在 App1 上提交他的信息 单击 App1 上的特定按钮 链接时 相同的数据应发布到 App2 上的页面 并且用户也应重定向到 App2 上的同一页面 我需
  • 学说 2 命令行打印 Cygwin 配置

    我正在尝试在我的项目中使用 Doctrine 2 但是当我尝试访问命令行以从数据库导入实体以生成文件时 它会打印以下代码 vendor bin doctrine dir d 0 cd d cd doctrine orm bin pwd Se
  • 手动标记的 Span 中带有 ENT_TYPE 的模式不起作用

    作为实现此目的的替代方法 IN 属性中具有多项条目的模式 https stackoverflow com questions 61975312 patterns with multi terms entries in the in attr
  • 内部矩阵尺寸误差必须符合绘图时的误差

    我正在尝试绘制函数 f x x e x cos x 从 0 到 2 pi 我尝试过运行 x 0 pi 100 2 pi y x exp x cos x 然而 每次我尝试设置 y Matlab 向我抛出 使用 时出错 并表示内部矩阵维度必须一
  • Hibernate 中的 UTF-8

    当我从 MySql 数据库的查询中检索信息时遇到问题 如下所示 Je b tirai UTF 8 字符集和 Hibernate 或 MySql 存在错误 请问我该如何解决这个问题 这是我的休眠设置
  • 对连接表进行序列化查询

    我正在尝试使用sequelize 查询连接表 这是模型 db client belongsToMany db user through db clientUser onDelete cascade db user belongsToMany
  • 浏览器在动画/移动元素上未触发鼠标悬停/鼠标输入

    如果您有一个具有移动动画的元素 mouseover and mouseenter除非用户移动鼠标 否则不会触发事件 为了演示 请使用 jQuery 尝试下面的代码块 如果您将鼠标放在移动的 div 前面 这样当 div 经过时您就不会移动鼠
  • MySql Xml 函数的性能?

    我对新的感到非常兴奋Mysql XML 函数 http dev mysql com doc refman 5 1 en xml functions html function updatexml 现在我终于可以在我的老式关系数据库中嵌入 面
  • Flurry Analytics 在 Android 模拟器中“运行”时崩溃,但在模拟器中“调试”时不会崩溃

    根据标题 我有一个应用程序 它使用乱舞分析 http www flurry com flurry analytics htmlAndroid 的库 我已经关注了他们的基本步骤 http support flurry com index ph
  • 在 Windows 桌面上制作 3D 对象动画

    我需要在 Windows 桌面上绘制用户可以与之交互的 3D 对象 例如狗 并为其设置动画 用户交互假设点击 显示 不规则形状 对话框以供用户输入等 您知道实现这一目标的具体方法吗 我想我有几种选择 有什么建议吗 哪一种最好 最简单 WPF
  • Microsoft OLE DB Provider for SQL Server 错误“80040e14”“=”附近的语法不正确

    当我尝试使用以下代码从数据库检索数据时 出现此错误 有人可以帮忙吗 set rs Server CreateObject ADODB recordset sql SELECT from COMPANY WHERE COMPANY ID Re
  • 如何使用 pandas 绘制阴影条?

    我试图通过填充图案而不是 仅 颜色来实现差异化 我如何使用熊猫做到这一点 在 matplotlib 中可以通过传递hatch所讨论的可选参数here https stackoverflow com questions 14279344 ho
  • Python 中的条件评估调试语句

    Python 有几种打印 trace 输出的方法 print import logging stdout write可用于打印调试信息 但它们都有一个缺点 即使记录器的阈值太高或流关闭 Python 仍会评估打印语句的参数 严格评估 这可能
  • 将一些 LISP 转换为 C#

    我正在阅读保罗 格雷厄姆的垃圾邮件计划 http www paulgraham com spam html想要更好地理解它 但我的 LISP 真的很生疏 他有一段计算概率的代码片段 let g 2 or gethash word good
  • R 中 glmnet 图的图例标签错误

    我修改了这篇文章中的函数 在 R 中的 glmnet 图中的曲线上添加标签 https stackoverflow com questions 30560689 adding labels on curves in glmnet plot
  • Windows 进程的内存映射是什么样的?

    这可能是一个重复的问题 我想知道windows进程的内存映射是什么样的 我正在寻找细节 请提供博客 文章和其他相关文献的链接 我总是喜欢能够真正看到事物 而不仅仅是阅读理论 事实证明 根据这篇博文 http www nynaeve net