ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287

以 32 位的 ELF header 数据结构为例:

 #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;

1、e_ident

ELF 标识。是一个 16 字节大小的数组,其各个索引位置的字节数据有固定的含义。

前 4 个字节 e_ident[EI_MAG0] ~ e_ident[EI_MAG3] 的内容固定为 0x7f、’E’、’L’、’F’,标识这是一个 ELF文件。

e_ident[EI_CLASS] 指明文件类别:0(无效目标文件);1(32 位目标文件);2(64 位目标文件)。

e_ident[EI_DATA] 指明字节序,规定该文件是大端还是小端:0(无效编码格式);1(小端);2(大端)。

e_ident[EI_VERSION] 指明 ELF 文件头的版本。

从 e_ident[EI_PAD] 到 e_ident[EI_NIDENT-1] 之间的 9 个字节保留。

2、e_type

文件类型。常见的:1(可重定位文件:“.o 文件”);2(可执行文件);3(共享库文件:“.so 文件”)。

3、e_machine

指定该程序在什么平台上使用,比如 EM_386 表示在 Inter x86 机器上使用。

4、e_version

ELF 文件版本号。

5、e_entry

程序的入口虚拟地址。对于可执行文件来说,当 ELF 文件加载完成后,将从这个地址开始执行。对于其它文件,该值为 0。

6、e_phoff / e_shoff

分别指明 Program Header Table 和 Section Header Table 在文件中的字节偏移量,没有则为 0。

7、e_flags

处理器特定的标志位,通常不怎么关心。

8、e_ehsize

指明 ELF 文件头的字节大小(52 个字节)。

9、e_phentsize / e_phnum

e_phentsize 指明在 Program Header Table 中的每一项的字节大小,e_phnum 指明共有多少项。

10、e_shentsize / e_shnum

e_shentsize 指明在 Section Header Table 中的每一项的字节大小,e_shnum 指明共有多少项。

11、e_shstrndx

在 Section Header Table 中,存储“节名字表”的 Section(就是 .shstrtab 节)所对应的索引。

ELF Format 笔记(二)—— ELF Header的更多相关文章

  1. ELF Format 笔记(十二)—— 段类型(segment types)

    ilocker:关注 Android 安全(新手) QQ: 2597294287 PT_NULL:如果段类型是 PT_NULL,那相应程序头结构体的其它成员都无意义,该程序头项可被忽略. 暂时还没遇到 ...

  2. ELF Format 笔记(四)—— 节(Section)

    ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287 ELF 文件可以包含很多 section,所有的 section 都在 section header tab ...

  3. ELF Format 笔记(十四)—— 段内容

    ilocker:关注 Android 安全(新手) QQ: 2597294287 一个段 (segment) 由一个或多个节 (section) 组成,但这对 android linker 是透明的, ...

  4. ELF Format 笔记(一)—— 概述

    ilocker:关注 Android 安全(新手) QQ: 2597294287 ELF Object files 参与程序的链接和执行,从这两个角度分别有两种视图: ELF header 位于文件的 ...

  5. ELF Format 笔记(三)—— Section Types

    ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287 ELF 文件中会包含很多 section,所有的 section 都在 section header tab ...

  6. ELF Format 笔记(八)—— 符号的类型和属性(st_info)

    我是天空里的一片云,偶尔投影在你的波心,你不必讶异,更无须欢喜,在转瞬间消灭了踪影.你我相逢在黑夜的海上,你有你的,我有我的,方向:你记得也好,最好你忘掉,在这交会时互放的光亮! —— 徐志摩·偶然 ...

  7. ELF Format 笔记(十五)—— 符号哈希表

    ilocker:关注 Android 安全(新手) QQ: 2597294287 符号哈希表用于支援符号表的访问,能够提高符号搜索速度. 下表用于解释该哈希表的组织,但该格式并不属于 ELF 规范. ...

  8. ELF Format 笔记(五)—— 特殊 Section

    ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287 链接器把一些独立的 object files 和库文件链接起来,形成可执行文件.在这个过程中,链接器需要解决 ...

  9. ELF Format 笔记(六)—— 字符串表

    ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287 字符串表中包含若干以 null 结尾的字符串,这些字符串通常是 symbol 或 section 的名字.当 ...

随机推荐

  1. static关键字详解

    首先,要了解一下这些东西的存放位置 堆区: 1.存储的全部是对象,每个对象都包含一个与之对应的class的信息.(class的目的是得到操作指令) 2.jvm只有一个堆区(heap)被所有线程共享,堆 ...

  2. Use a cache

    To create high-performance systems, sometimes you need to cache data. Play has a cache library and w ...

  3. 小数5.2500四舍五入保留1位小数的java算法之一

    BigDecimal bd = new BigDecimal(5.2500); BigDecimal a = bd.setScale(1, BigDecimal.ROUND_HALF_UP); dou ...

  4. JavaScript强化教程 - 六步实现贪食蛇

    1.首先创建div 并且给div加样式 <div id="pannel" style="width: 500px;height: 500px;z-index: 1; ...

  5. 百度在线编辑器UEditor(v1.3.6) .net环境下详细配置教程

    UEditor是百度开发团队奉献的一款很不错的在线编辑器.在百度自己很多产品上都有应用,本文主要是该编辑器的配置教程. 1.下载UEditor,当前最新版本是1.3.6.这里下载的.net版本,选择U ...

  6. 将Android系统源码导入ecplise

    Android系统源码中带有个IDE的配置文件,目录为:development/ide/ 如果要用eclipse导入查看系统源码,则将development/ide/eclipse/.classpat ...

  7. Android MediaPlayer的生命周期

    MediaPlayer的状态转换图也表征了它的生命周期,如下: 这张状态转换图清晰的描述了MediaPlayer的各个状态,也列举了主要的方法的调用时序,每种方法只能在一些特定的状态下使用,如果使用时 ...

  8. UITableView详细注释

    style //普通 UITableViewStylePlain, //分组 UITableViewStyleGrouped //表格视图 UITableView * tableView = [[UI ...

  9. Xcode插件

    Xcode插件-2016-03-10Xcode插件管理神器 —— Alcatraz 说明 Alcatraz是一个管理Xcode开源包的,你可以用它查找安装你想要的插件,模板以及配色方案,而你无需手动克 ...

  10. composer快速入门

    composer.json 文件内容定义 ====================================================={ "require":{ &q ...