ELF 檔案格式

2022-08-11 11:27:12 字數 1372 閱讀 1825

elf檔案頭

#define ei_nident 16typedef 

struct

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。

ELF檔案格式

在介紹elf格式之前,先簡單說明一下可執行檔案的生成流程 1 編寫c原始檔,或彙編原始檔 2 準備共享庫格式的目標檔案 shared object file 如數學庫 標準庫 2 用編譯器 compiler 將c編譯成可重定位格式的目標檔案 relocatable object file 用彙編器 ...

ELF檔案格式

1.目標檔案 編譯器和彙編器生成可重定位目標檔案 包括共享目標檔案 鏈結器生成可執行目標檔案。2.可重定位目標檔案和可執行目標檔案的格式 可重定位目標檔案格式 可執行目標檔案格式 3.下面我們開始分析上面 而對於未被初始化的全域性變數和靜態區域性變數,編譯的時候並未被分配空間,而是僅僅在.bss段中...

ELF檔案格式

elf指executable and linking format,不僅包含可執行檔案,也包含庫檔案,包括靜態庫和動態庫。準備的說,也就是三種 這不廢話嗎 可執行檔案 靜態鏈結庫 動態鏈結庫 要觀察elf的具體資訊,可以用以下幾個工具 nm lists symbols from object fil...