gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 12:27:56 26 4
gpt4 key购买 nike

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

最佳答案

我总是喜欢真正能够看到事物,而不是仅仅阅读理论。事实证明,根据this blog post ,如果你使用 windbg 打开一个程序,即使它没有运行,它仍然会被映射到一个地址空间,就像它在运行一样。因此,您的反汇编窗口形象地(不保证在这些确切的地址加载您的代码)根据代码向您显示这些地址的内容:

WinDbg working

当然,由于 ASLR,您不能保证这些地址,但它给了您一个想法/让您思考:内存地址也只是代码。根据 Von Neumann,代码和内存存储在同一(虚拟)空间中大多数现代计算机实现的体系结构。不幸的是,由于没有堆栈、堆等,您无法移动和查看它们。

blog post from Microsoft为您提供虚拟地址空间的高级概述。如您所见,其中一半保留供操作系统使用,另一半可以填充任何您拥有的内容(代码、malloc 调用、堆栈分配等)。

就地址空间如何在用户端工作而言,this diagram帮助我理解它。它的链接 in this question它提供了一系列关于各种可能 map 的体面链接。但请记住,内存中的布局会因部件而异。

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

在学习的同时,您可能还对可执行文件在磁盘上的显示方式感兴趣。 This articlethis article particularly提供一些对PE文件格式的深入分析。后一篇文章还有一张小图,大致显示了数据是如何映射的。

关于windows - Windows进程的内存映射是什么样子的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5680766/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com