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 进程的内存映射是什么样的? 的相关文章

  • 在 Windows 7 上的 Sourcetree 中比较 Word docx 文件

    我一直在尝试获取在 Windows 7 上的 Sourcetree 中工作的 Word docx 文件的文本差异 我已按照此处的说明进行操作将 Microsoft Word 与 git 结合使用 http blog martinfenner
  • 如何创建向后兼容 Windows 7 的缩放和尺寸更改每显示器 DPI 感知应用程序?

    我是 WPF 和 DPI 感知 API 的新手 正在编写一个在 Windows 7 8 1 和 10 中运行的应用程序 我使用具有不同每个显示器 DPI 设置的多个显示器 并且有兴趣将我的应用程序制作为跨桌面配置尽可能兼容 我已经知道可以将
  • 如何在 Ubuntu VirtualBox 中运行 Meteor 应用程序并使用 Windows 主机上的编辑器进行编辑?

    我希望在运行 Ubuntu 的 virtualbox 来宾中运行一个用于开发目的的流星服务器 该项目将位于主机上的一个文件夹内 该文件夹将共享给来宾 该文件夹本身位于 Dropbox 文件夹内 这样我可以在多个虚拟机和工作站之间共享开发 但
  • 无法加载 JNI 共享库 (JDK)

    当我尝试打开时Eclipse http www eclipse org 弹出对话框指出 无法加载 JNI 共享库 C JDK bin client jvm dll 此后 Eclipse 强制关闭 我想提出以下几点 我检查了这条路径上是否存在
  • conio.h 不包含 textcolor()?

    我一直在考虑在我用 C 编写的 DOS 程序中使用颜色 有人告诉我conio h有textcolor 函数 但是当我在代码中使用它时 编译器 链接器会向我抛出错误 说我对该函数有未定义的引用 Does conio h真的有这个功能还是有人告
  • 所有平台上的java

    如果您想用 java 为 Windows Mac 和 Linux 编写桌面应用程序 那么所有这些代码都相同吗 您只需更改 GUI 即可使 Windows 应用程序更像 Windows 等等 如果不深入细节 它是如何工作的 Java 的卖点之
  • Windows 上的递归移动命令

    我需要做一个 sh 的 bat 副本 我不太了解 Windows cmd 在 Linux 上我可以做 mv or rsync a SOURCE DEST remove sent files ignore existing whole fil
  • Windows 窗体中的标准 Windows 菜单栏

    我注意到添加了一个MenuStrip 来自工具箱 我的表单设计不会产生像许多本机 Windows 应用程序中那样的菜单栏 相反 我得到了一个像 Visual Studio 自己的菜单栏 没有任何样式设置MenuStrip似乎模仿了更常见的本
  • Visual C++ 找不到“Windows 类型”,如 PVOID、DWORD、ULONG 等

    Windows 似乎无法找到任何这些类型 我完全不知道该怎么办 我在 MSDN 上找到的东西似乎表明它们是默认包含的 但它们在 Native 程序或 CLR 程序中不起作用 我收到的具体错误是
  • 如何在Windows中的Python 3.9下pip安装pickle?

    我需要pickle https docs python org 3 9 library pickle html module pickle包安装在我的下面Python 3 9在 Windows 10 下 我尝试过的 当尝试与pip inst
  • Windows 8 Metro 应用程序(网格应用程序)过渡时出现黑色闪烁

    我正在基于网格应用程序模板构建 Windows 8 Metro 应用程序 一切都很顺利 直到我尝试更改应用程序的主题和背景 我将图像背景应用于所有 3 个 XAML 页面的网格 另外 我在应用程序包清单中将主题更改为 Light 但它没有执
  • 如何捕获未发送到 stdout 的命令行文本?

    我在项目中使用 LAME 命令行 mp3 编码器 我希望能够看到某人正在使用什么版本 如果我只执行 LAME exe 而不带参数 我会得到 例如 C LAME gt LAME exe LAME 32 bits version 3 98 2
  • 在 64 位 Windows 上运行 32 位可执行文件时出现问题

    如果允许的话 我会添加 500 个我自己的代表作为赏金 我在用着wkhtml转pdf http wkhtmltopdf org 将 HTML 网页转换为 PDF 这在我的 32 位开发服务器上完美运行 不幸的是 我无法运送我的机器 p 但是
  • 如何批量获取子字符串在字符串中的位置

    获取子串的位置 Set str1 This is Test string Set sstr Test 这里我需要获取 Test 8 的位置 谢谢 echo OFF SETLOCAL Set str1 This is Test string
  • 批处理脚本 - IF EXIST 复制到 %localappdata% 错误

    我似乎被批处理脚本困住了 需要一些帮助 基本上我需要检查文件是否存在于文件夹中 localappdata 如果确实如此 则覆盖该文件 如果没有放置在不同的位置 那么目前它的内容如下 IF EXIST localappdata foldern
  • 如何在拥有句柄时检查给定进程是否正在运行

    我在用ShellExecuteEx启动应用程序 成功开始阅读后TShellExecuteInfo hProcess获取已启动进程的句柄 我想定期检查我的应用程序启动的进程是否仍在运行 两个或多个同名进程可以同时运行 我想确保我的应用程序正在
  • 已达到网络 BIOS 命令限制

    我的 ASP Net 应用程序从另一台 Windows 服务器上的共享文件夹获取文件 当请求增加时 我收到以下错误 The network BIOS command limit has been reached 我已按照以下步骤操作微软 K
  • Windows 等效的系统配置目录

    我正在 Ruby 中开发一个 CLI 应用程序 我希望允许通过标准配置文件级联在 Unix 中进行配置 etc appnamerc appnamerc 然而 该应用程序也应该在 Windows 环境中运行 我不确定将像这样的文件放在哪里 e
  • 当用户尝试打开新实例时返回到已打开的应用程序

    这是我有一段时间想不通的问题 防止第二个实例很简单并且有很多方法 但是恢复已经运行的进程则不然 我想 最小化 撤消最小化并将正在运行的实例置于最前面 在其他窗口后面 将应用程序置于最前面 我使用的语言是 VB NET 和 C 我发现这段代码
  • EnumDisplayDevices 与 WMI Win32_DesktopMonitor,如何检测活动监视器?

    对于我当前的 C 项目 我需要为在大量计算机上连接并处于活动状态的每个监视器检测一个唯一的字符串 研究指出了两种选择 使用 WMI 并查询 Win32 DesktopMonitor 以获取所有活动监视器 使用 PNPDeviceID 来唯一

随机推荐

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

    我正在开发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