【Android 逆向】ELF 文件格式总结 ★★★
文章目錄
- 一、ELF 文件當前版本號
- 二、操作系統 ABI 信息
- 三、ABI 版本
- 四、文件頭校驗
- 五、文件頭長度信息
- 六、ELF 文件類型 ( 動態庫文件 )
- 七、ELF 文件對應 CPU 架構
- 八、ELF 目標文件版本
- 九、可執行程序起始地址
- 十、程序頭偏移量
- 十一、節區頭偏移量
- 十二、處理器特定標志
- 十三、ELF 文件頭大小
- 十四、ELF 程序頭入口大小
- 十五、ELF 程序頭入口個數
- 十六、ELF 文件節區頭入口大小
- 十七、ELF 文件節區頭入口個數
- 十八、字符表序號
一、ELF 文件當前版本號
ELF 文件頭第 6 字節 : 版本信息 ;
二、操作系統 ABI 信息
ELF 文件頭 第 7 字節 : 操作系統 ABI 信息 ;
三、ABI 版本
ELF 文件頭 第 8 字節 : ABI 版本 ; 00 表示沒有版本 ;
四、文件頭校驗
ELF 文件頭 第 9 ~ 14 字節 : 6 字節的校驗位 , 此處全部為 00 , 沒有校驗信息 ;
五、文件頭長度信息
ELF 文件頭 第 15 字節 : 長度信息 , 值為 00 , 沒有實際使用 ;
六、ELF 文件類型 ( 動態庫文件 )
ELF 文件頭 第 16 ~ 17 字節 : ELF 文件類型 , 動態庫文件 / 可執行文件 / 靜態庫文件 / 鏈接文件 ; 03 00 表示該 ELF 文件是動態庫文件 ;
03 00 小端格式 , 低位在低地址 , 值為 3 ;
七、ELF 文件對應 CPU 架構
ELF 文件頭 第 18 ~ 19 字節 : ELF 文件對應的 CPU 架構體系 , x86 / arm / mips ; 03 00 表示該 ELF 文件對應的 CPU 架構師 x86 架構 ;
03 00 小端格式 , 低位在低地址 , 值為 3 ;
八、ELF 目標文件版本
ELF 文件頭 第 20 ~ 23 字節 : 目標文件版本 ; 默認值 1 ;
01 00 00 00 小端格式 , 低位在低地址 , 值為 1 ;
九、可執行程序起始地址
ELF 文件頭 第 24 ~ 27 字節 : 如果 ELF 是可執行文件 , 應該從哪個地址開始執行代碼 ; 該值在可執行 ELF 文件中才有意義 , 動態庫文件沒有意義 ;
00 00 00 00 小端格式 , 低位在低地址 , 值為 0 ;
當前解析的 ELF 文件是動態庫文件 , 該值沒有實際意義 , 設置 0 默認值 ;
動態庫并不能獨立執行 , 需要由外部加載執行 ;
十、程序頭偏移量
ELF 文件頭 第 28 ~ 31 字節 : 程序頭偏移量 ; 程序頭的位置 , 從整個 ELF 文件的第 0 字節開始計數 ;
34 00 00 00 小端格式 , 低位在低地址 , 值為 0x34 , 轉為十進制為 52 ;
該值說明程序頭的起始位置是 ELF 文件的第 0x34 字節位置 ;
十一、節區頭偏移量
ELF 文件頭 第 32 ~ 35 字節 : 節區頭偏移量 ; 節區頭的位置 , 從整個 ELF 文件的第 0 字節開始計數 ;
0C 41 00 00 小端格式 , 低位在低地址 , 值為 0x410C , 轉為十進制為 16652 ;
該值說明節區頭的起始位置是 ELF 文件的第 0x410C 字節位置 ;
十二、處理器特定標志
ELF 文件頭 第 36 ~ 39 字節 : 處理器特定標志 ; 默認為 0 ;
00 00 00 00 小端格式 , 低位在低地址 , 值為 0 ;
十三、ELF 文件頭大小
ELF 文件頭 第 40 ~ 41 字節 : ELF 文件頭大小 ; 一般是 52 字節 ;
34 00 小端格式 , 低位在低地址 , 值為 52 ;
十四、ELF 程序頭入口大小
ELF 文件頭 第 42 ~ 43 字節 : ELF 程序頭入口大小 ; 一般是 32 字節 ;
20 00 小端格式 , 低位在低地址 , 值為 32 ;
如下圖所示 , 程序頭是由 7 個入口組成 , 每個入口大小是 32 字節 ;
十五、ELF 程序頭入口個數
ELF 文件頭 第 44 ~ 45 字節 : ELF 程序頭入口個數 ; 這里是 7 個 ;
07 00 小端格式 , 低位在低地址 , 值為 7 ;
如下圖所示 , 程序頭是由 7 個入口組成 , 每個入口大小是 32 字節 ;
十六、ELF 文件節區頭入口大小
ELF 文件頭 第 46 ~ 47 字節 : ELF 文件節區頭入口大小字節數 ; 一般是 40 個字節 ;
28 00 小端格式 , 低位在低地址 , 值為 40 ;
下圖選中的部分 , 就是一個節區頭入口的大小 , 有 21 個節區頭入口 , 每個節區頭入口大小 40 字節 ;
十七、ELF 文件節區頭入口個數
ELF 文件頭 第 48 ~ 49 字節 : ELF 文件節區頭入口個數 ; 這里是 21 個 ;
15 00 小端格式 , 低位在低地址 , 值為 21 ;
下圖選中的部分 , 就是一個節區頭入口的大小 , 有 21 個節區頭入口 , 每個節區頭入口大小 40 字節 ;
十八、字符表序號
ELF 文件頭 第 50 ~ 51 字節 : ELF 文件 字符表序號 ; 這里是 20 ;
14 00 小端格式 , 低位在低地址 , 值為 20 ;
節區中 , 專門有一個節區用于存放字符表 , 這里的 20 序號的節區 , 就是字符表節區 ;
總結
以上是生活随笔為你收集整理的【Android 逆向】ELF 文件格式总结 ★★★的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android 逆向】使用 Pytho
- 下一篇: 【Android 逆向】APK 文件格式