Bru*_*uce 14 windows memory-management low-level memory-layout
这可能是一个重复的问题.我想知道windows进程的内存映射是什么样的?我正在寻找细节.请提供博客,文章和其他相关文献的链接.
小智 10
我总是希望能够看到事物,而不仅仅是阅读理论.根据这篇博客文章,事实证明,如果你使用windbg打开一个程序,即使它没有运行,它仍然会被映射到一个地址空间,就好像它一样.因此,您的反汇编窗口比喻(不保证在这些确切的地址加载您的代码)显示您在代码方面的地址:

当然,由于ASLR,你不能保证这些地址,但它给你一个想法/让你思考:内存地址也只是代码.根据大多数现代计算机实现的Von Neumann架构,代码和存储器存储在相同(虚拟)空间中.不幸的是,因为没有堆栈,堆等你无法移动并查看那些.
Microsoft的这篇博客文章为您提供了虚拟地址空间的高级概述.正如您所看到的,其中一半保留供操作系统使用,另一半可以填充您拥有的任何内容(代码,malloc调用,堆栈分配等).
就地址空间如何在用户端工作而言,此图表帮助我理解了它.它与这个问题相关联,为不同的可能地图提供了一系列不错的链接.但请记住,内存中的布局在部件方面会有所不同.
要记住的重要一点是,所有这些,程序,数据,堆栈,堆,内核的东西,都是一大系列的内存地址,尽管这些实际上可能会或可能不会转换为实际的内存地址.
虽然您正在使用它,但您可能也对可执行文件在磁盘上的显示方式感兴趣.本文和本文特别提供了一些PE文件格式的深入分析.后一篇文章还有一个小图,大致显示了mmap的数据.
| 归档时间: |
|
| 查看次数: |
9187 次 |
| 最近记录: |