我正在学习一些关于ELF格式的东西(在x64 Linux平台上),在程序头中,第一个段(PT_PHDR)有这个虚拟地址0x40004000 (对齐是8个字节)。我不明白,也找不到解释的地方。在互联网上的其他一些例子中,它是0x08048034,我不知道这是因为操作系统还是处理器架构。有没有地方列出并简要解释这些固定值,比如参考书或手册之类的?谢谢
发布于 2014-02-17 17:50:15
在x64 Linux平台上
这个平台根本不存在。你是说Linux x86_64平台。
(PT_PHDR)有这个虚拟地址0x40004000
那是个很奇怪的地址。你确定不是0x400040吗?
我不明白,也找不到解释的地方。在互联网上的其他一些例子中,它是0x08048034,我不知道这是因为操作系统还是处理器架构。
对于Linux x86_64,链接可执行文件的默认地址是0x400000,Elf64_Ehdr的大小(在每个ELF二进制文件的开头)是64,给出了0x400040的默认PT_PHDR地址。
对于Linux i*86,可执行文件的默认地址是0x08048000,Elf32_Ehdr的大小是52,给出了0x08048034的默认PT_PHDR地址。
这些地址中的任何一个都可以通过例如使用链接器-Ttext=0xNNNN标志进行更改。
https://stackoverflow.com/questions/21832852
复制相似问题