文章目录

  • 一、ELF 文件简介
  • 二、ELF 文件头
  • 三、ELF 文件头标志
  • 四、ELF 文件位数
  • 五、ELF 文件大小端格式

一、ELF 文件简介


在上一篇博客 【Android 逆向】ELF 文件格式 ( 安装 010 Editor 二进制查看工具的 ELF.bt 插件模板 | 安装 ELF.bt 模板 | 打开 ELF 文件 ) 中 , 准备 ELF 文件解析环境 , 在 010 Editor 中安装了 ELF.bt 模板 ;

【Android 逆向】ELF 文件格式 ( ELF 文件头 | ELF 文件头标志 | ELF 文件位数 | ELF 文件大小端格式 )_ELF

二、ELF 文件头


ELF 文件头区域如下 :

【Android 逆向】ELF 文件格式 ( ELF 文件头 | ELF 文件头标志 | ELF 文件位数 | ELF 文件大小端格式 )_elf文件_02

【Android 逆向】ELF 文件格式 ( ELF 文件头 | ELF 文件头标志 | ELF 文件位数 | ELF 文件大小端格式 )_ELF_03

前 16 字节是 ELF 的标志 ,

【Android 逆向】ELF 文件格式 ( ELF 文件头 | ELF 文件头标志 | ELF 文件位数 | ELF 文件大小端格式 )_原力计划_04

三、ELF 文件头标志


​0 ~ 3 字节 :​ 是 0x7F 和 ELF 的 ASCII 码 ; 这是 ELF 文件的特征 ;

【Android 逆向】ELF 文件格式 ( ELF 文件头 | ELF 文件头标志 | ELF 文件位数 | ELF 文件大小端格式 )_elf文件_05

四、ELF 文件位数


​4 字节 :​ 表示该 ELF 文件的位数 32 位还是 64 位 ; 值为 01 , 表示该 ELF 文件是 32 位 文件 ;

【Android 逆向】ELF 文件格式 ( ELF 文件头 | ELF 文件头标志 | ELF 文件位数 | ELF 文件大小端格式 )_android_06

五、ELF 文件大小端格式


​5 字节 :​ 表示 有效位 格式 , 取值 LSB / MSB ; 此处值为 1 , LSB 格式 ; 这个值由编译器决定 ; 有些 CPU 加载 LSB 值快 , 有些 CPU 加载 MSB 值快 ; 大部分 程序 使用 LSB 格式 ;

LSB 表示最低有效位 ( 小端格式 ) , MSB 表示最高有效位 ( 大端格式 ) ;

【Android 逆向】ELF 文件格式 ( ELF 文件头 | ELF 文件头标志 | ELF 文件位数 | ELF 文件大小端格式 )_原力计划_07

【Android 逆向】ELF 文件格式 ( ELF 文件头 | ELF 文件头标志 | ELF 文件位数 | ELF 文件大小端格式 )_逆向_08

注意与 大端格式 / 小端格式 区分 , 概念不同 ; LSB 最低有效位 , 某种程度上等效于 小端格式 ;

【Android 逆向】ELF 文件格式 ( ELF 文件头 | ELF 文件头标志 | ELF 文件位数 | ELF 文件大小端格式 )_android_09