可执行文件的每个字节是否在虚拟内存中分配了一个地址,从基地址开始?

问题描述 投票:0回答:1

当在 Linux 中启动一个可执行文件时,整个可执行文件如何在虚拟内存中分配地址?

我运行了“objdump -d bin”,它给了我如下输出:

11b0    48 83 c4 08     add $0x8,%rsp
11b4    c3              ret

我想知道整个可执行文件是如何在内存中引用的。在我运行 objdump 后,我是否正确地假设每个字节都分配了一个地址(在虚拟内存中)?例如11b0 = 48、11b1 = 83、11b2 = c4等?

如果是这样,这些地址是否基于加载文件时给出的“基地址”工作?

另外,每个程序的基地址是相同的还是不同的?也许 ASLR 处于活动状态?

linux objdump virtual-address-space
1个回答
0
投票

现代可执行格式指定模块映像的内存布局,通常作为一系列segmentssections(术语取决于文件类型和格式)。一个段定义通常包括该段的虚拟地址和大小,是从文件加载还是补零,以及该段的内存权限(读、写、执行)。

© www.soinside.com 2019 - 2024. All rights reserved.