程序员的自我修养之ELF文件

一、文件头: sizeof(Elf32_Ehdr)=52

  • e_type: 类型---可重定位文件.o、可执行文件、共享目标文件.so
  • e_ehsize: 文件头大小---52
  • e_machine: CPU平台属性,如Intel_x86;
  • e_entry: 入口虚拟地址,但是可重定位文件没有;
  • e_shoff: 段表偏移量, 即在ELF文件的位置;下面两个11*40=440表达段表长度
  • e_shnum: 段表描述符数量,即段表中段的个数:11
  • e_shentsize: 段表描述符大小,sizeof(Elf32_Shdr)=40
  • e_shstrndx: 段表字符串表所在的段在段表中的下标;

二、段表: sizeof(Elf32_Shdr)=40

  • sh_name: 段名,如.test/.data/.bss/.rodata/.comment, .rel.text/.rel.data, .symtab, .strtab/.shstrtab, 
  • sh_type: 类型---程序段、重定位表、符号表、字符串表
  • sh_flags: 标志位---可写、可执行、分配空间
  • sh_addr: 加载后在地址空间中的虚拟地址
  • sh_offset: 段偏移量,即该段该文件中的地址!!!!!!!!!!!!!!!!!
  • sh_size: 段大小
  • sh_link: 符号表的下标
  • sh_info: 作用于哪个段?

三、重定位表:sizeof(Elf32_Rel)=8

  • r_offset:重定位入口的偏移,对于可重定位文件就是相对于段起始地址的偏移
  • r_info: 重定位入口的符号和类型

四、ELF文件符号表: sizeo(Elf32_Sym)=?

  • st_name: 符号名,即该符号名在字符串表的下标;
  • st_size: 符号大小,若是数据则是数据类型的大小
  • st_value: 符号值即地址---符号在段中的偏移量!!!!!!!!!!!!!!!!!!!!
  • st_ndx: 符号所在的段在段表中的下标,或者SHN_UNDEF!!!!!!!!!!!!!!!!!!!
  • st_info: 符号类型和绑定信息?

五、字符串表:符号名+段名

 

转载于:https://www.cnblogs.com/bo1990/p/11380692.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值