Windows进程的内存映射如何?

前端之家收集整理的这篇文章主要介绍了Windows进程的内存映射如何?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这可能是一个重复的问题.我想知道一个 windows进程的内存映射怎么样?我正在寻找细节.请提供博客,文章和其他相关文献的链接.
我总是喜欢实际看到的东西,而不只是读理论.事实证明,根据 this blog post,如果您使用windbg打开程序,即使它不运行,仍然映射到地址空间,就像它一样.因此,您的反汇编窗口比喻(不保证在这些确切的地址加载您的代码)显示这些地址在代码方面是什么:

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

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

关于地址空间在用户端的工作方式,this diagram帮助我理解了.它链接in this question,它为不同的可能的地图提供了一系列体面的链接.记住,内存中的布局将在部件方面有所不同.

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

尽管如此,您可能也会对可执行文件在磁盘上的显示感兴趣. This articlethis article particularly提供了一些对PE文件格式的深入分析.后一篇文章还有一个图表,大致显示了数据是毫米.

猜你在找的Windows相关文章