zoukankan      html  css  js  c++  java
  • ELF 文件格式

    ELF文件头

    #define EI_NIDENT 16
    typedef struct{
    unsigned char
    e_ident[EI_NIDENT];
    Elf32_Half e_type;
    Elf32_Half e_machine;
    Elf32_Word e_version;
    Elf32_Addr e_entry;
    Elf32_Off e_phoff;
    Elf32_Off e_shoff;
    Elf32_Word e_flags;
    Elf32_Half e_ehsize;
    Elf32_Half e_phentsize;
    Elf32_Half e_phnum;
    Elf32_Half e_shentsize;
    Elf32_Half e_shnum;
    Elf32_Half  e_shstrndx;
    }Elf32_Ehdr;

    表 2 e_ident[] 标识索引
    名称               取值        目的和值
    EI_MAG0         0           文件标识,0x7F
    EI_MAG1         1           文件标识,E
    EI_MAG2         2           文件标识,L
    EI_MAG3         3           文件标识,F
    EI_CLASS        4           文件类,0表示非法类别,ELFCLASSNONE;1表示32位,名称ELFCLASS32;2表示64位,名称ELFCLASS64
    EI_DATA          5           数据编码,0表示非法数据编码,ELFDATANONE;1表示小端,ELFDATA2LSB;2表示大端,ELFDATA2MSB
    EI_VERSION    6           文件版本,1表示当前版本
    EI_PAD            7           补齐字节开始处,标记 e_ident 中未使用字节的开始。初始化为 0
    EI_NIDENT      16         e_ident[]大小

    e_type 目标文件的格式,1表示可重定位文件、2表示可执行文件、3表示共享库文件

    e_machine:0=No machine、1=AT&T WE 32100、2=sparc、3=Intel 80386

    e_version:0=Invalid version、1=Current version

    e_entry 程序入口的虚拟地址。如果目标文件没有程序入口,可以为 0。

    e_phoff 程序头部表格(Program Header Table)的偏移量(按字节计算)。如果文件没有程序头部表格,可以为 0。

    e_shoff 节区头部表格(Section Header Table)的偏移量(按字节计算)。如果文件没有节区头部表格,可以为 0。

    e_flags 保存与文件相关的,特定于处理器的标志。标志名称采用 EF_machine_flag的格式。

    e_ehsize ELF 头部的大小(以字节计算)。

    e_phentsize 程序头部表格的表项大小(按字节计算)。

    e_phnum  程序头部表格的表项数目。可以为 0。

    e_shentsize 节区头部表格的表项大小(按字节计算)

    e_shnum 节区头部表格的表项数目。可以为 0。

    e_shstrndx 节区头部表格中与节区名称字符串表相关的表项的索引。如果文件没有节区名称字符串表,此参数可以为 SHN_UNDEF。

  • 相关阅读:
    Application和Page详解
    Session解析
    CSS设置技巧
    CSS布局模型
    CSS盒模型
    JAVA -Xms -Xmx -XX:PermSize -XX:MaxPermSize 区别
    设计模式——单例模式
    设计模式——工厂模式
    Go语言学习
    每周一个设计模式
  • 原文地址:https://www.cnblogs.com/gaocan/p/5382785.html
Copyright © 2011-2022 走看看