ELF文件研究

//
Create Time: 201606131327
Update Time: 201707101047
//
这里写图片描述

//elf文件头
typedef struct{
  unsigned char e_ident[16]; 0x7f 'E' 'L' 'F'...
  Elf32_Half e_type;                //标识文件类型
  Elf32_Half e_machine;         //表明运行改程序需要的体系结构
  Elf32_Word e_version;         //标识文件的版本
  Elf32_Addr e_entry;              //程序的入口地址
  Elf32_Off e_phoff;                 //Program Header table在文件中的偏移字节数
  Elf32_Off e_shoff;                 //Section Header table在文件中的偏移字节数
  Elf32_Word e_flags;             //对IA32而言,此项为0
  Elf32_Half e_ehsize;            //Elf Header大小
  Elf32_Half e_phentsize;       //表示Program Header table每个条目的大小
  Elf32_Half e_phnum;           //表示Program Header table中有多少个条目
  Elf32_Half e_shentsize;      //表示Section Header table每个条目的大小
  Elf32_Half e_shnum;          //表示Section Header table中有多少个条目
  Elf32_Half e_shstrndx;       //包含节名称的字符串是第几个节
}Elf32_Ehdr; 

//segment header
typedef struct {
     Elf32_Word p_type;        //当前Program header所描述的段的类型
     Elf32_Off     p_offset;      //p_offset 段的第一个字节在文件中的偏移
     Elf32_Addr  p_vaddr;      //p_vaddr 段的一个字节在内存中的虚拟地址
     Elf32_Addr  p_paddr;     //p_paddr 在物理内存定位相关的系统中,此项是为物理地址保留。
     Elf32_Word p_filesz;       //段在文件中的长度
     Elf32_Word p_memsz;   //段在内存中的长度
     Elf32_Word p_flags;       //与段相关的标志
     Elf32_Word p_align;       //根据此项值来确定段在文件及内存中如何对齐
}Elf32_Phdr;

//section header
typedef struct {
      Elf32_Word sh_name;
      Elf32_Word sh_type;
      Elf32_Word sh_flags;
      Elf32_Addr sh_addr;
      Elf32_Off sh_offset;
      Elf32_Word sh_size;
      Elf32_Word sh_link;
      Elf32_Word sh_info;
      Elf32_Word sh_addralign;
      Elf32_Word sh_entsize;
  } Elf32_Shdr;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值