我正在研究有关ELF格式的一些内容(在x64 Linux平台上),在程序头中,第一个段(PT_PHDR)具有此虚拟地址0x40004000
(对齐为8个字节)。我不明白,我找不到一个解释的地方。在互联网上的一些其他示例中,它是0x08048034
,我不知道这是因为操作系统还是处理器架构。是否存在列出并简要说明这些固定值的地方,如参考书或手册或其他内容?感谢
答案 0 :(得分:0)
在x64 Linux平台上
该平台不存在。你的意思是Linux x86_64
平台。
(PT_PHDR)具有此虚拟地址0x40004000
这是一个非常奇怪的地址。你确定它不是0x400040
吗?
我不明白,我找不到解释的地方。在互联网上的一些其他示例中,它是0x08048034,我不知道这是因为操作系统还是处理器架构。
对于Linux x86_64
,可执行文件链接的默认地址为0x400000
,Elf64_Ehdr
的大小(位于每个ELF二进制文件的开头)为{{1} },为您提供默认 64
地址PT_PHDR
。
对于0x400040
,可执行文件的默认地址为Linux i*86
,0x08048000
的大小为Elf32_Ehdr
,为您提供默认 { {1}}地址52
。
这些地址中的任何一个都可以通过例如使用链接器PT_PHDR
标志。