[ELF文件] 可重定位的目标文件

本文通过readelf工具分析了ELF目标文件的Header和Section Header Table,详细解释了各Section的含义和内存布局。内容包括:ELF Header的信息、Section的加载地址、.data和.text段的解析、.bss段的角色、重定位和符号表的作用。通过hexdump展示了文件字节布局,并探讨了反汇编与原始汇编代码的关联。
摘要由CSDN通过智能技术生成

目标文件

下面用 readelf 工具读出目标文件 max.oELF HeaderSection Header Table,然后我们逐段分析。

[test@localhost Assembler]$ readelf -a largest.o
ELF 头:
  Magic:  7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 
  Class:                             ELF64
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              REL (可重定位文件)
  Machine:                           Advanced Micro Devices X86-64
  Version:                           0x1
  入口点地址:              0x0
  程序头起点:              0 (bytes into file)
  Start of section headers:          496 (bytes into file)
  标志:             0x0
  本头的大小:       64 (字节)
  程序头大小:       0 (字节)
  Number of program headers:         0
  节头大小:         64 (字节)
  节头数量:         8
  字符串表索引节头: 5
  ...

ELF Header 中描述了操作系统是 UNIX,体系结构是 Advanced Micro Devices X86-64Section Header Table 中有 8 个 Section Header,从文件地址 496(0x1f0) 开始,每个 Section Header 占 64 字节,共 512 字节,到文件地址 0x3f0 结束。这个目标文件没有 Program Header。文件地址是这样定义的:文件开头第一个字节的地址是 0 ,然后每个字节占一个地址。

...
节头:
  [Nr] Name              Type             Address           Offset
       Size              EntSize          Flags  Link  Info  Align
  [ 0]                   NULL             0000000000000000  00000000
       0000000000000000  0000000000000000           0     0     0
  [ 1] .text             PROGBITS         0000000000000000  00000040
       000000000000002d  0000000000000000  AX       0     0     1
  [ 2] .rela.text        RELA             0000000000000000  000001c0
       0000000000000030  0000000000000018   I       6     1     8
  [ 3] .data             PROGBITS         0000000000000000  0000006d
       0000000000000038  0000000000000000  WA       0     0     1
  [ 4] .bss              NOBITS           0000000000000000  000000a5
       0000000000000000  0000000000000000  WA       0     0     1
  [ 5] .shstrtab         STRTAB           0000000000000000  000000a5
       0000000000000031  0000000000000000           0     0     1
  [ 6] .symtab           SYMTAB           0000000000000000  000000d8
       00000000000000c0  0000000000000018           7     7     8
  [ 7] .strtab           STRTAB           0000000000000000  00000198
       0000000000000028  0000000000000000           0     0     1
Key to Flags:
  W (write), A (alloc), X (execute), M (merge), S (strings), l (large)
  I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)
  O (extra OS
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值