elf header
.text
.data
.bss
…section header table
string tables
symbol tables
…elf檔案頭包含了整個檔案的基本屬性,如檔案版本,入口位址等,接著就是elf檔案的各個段
linux定義了自己的一套變數體系,如下
自定義型別
描述長度(位元組)
elf32_addr
32位版本程式位址
4elf32_half
32位版本的無符號短整形
2elf32_off
32位版本的偏移位址
4elf32_sword
32位版本有符號整形
4elf32_word
32位版本無符號整形
4elf64_addr
64位版本程式位址
8elf64_half
64位版本的無符號短整形
2elf64_off
64位版本的偏移位址
8elf64_sword
64位版本有符號整形
4elf64_word
64位版本無符號整形
4以32位版本為例,其頭定義如下
typedef structelf32_ehdr;
我們以乙個elf檔案為例,
可以看到elf標頭檔案資訊,我們開啟以16進製制開啟乙個這個檔案
第一行前4個位元組為 7f 45 4c 46,這個為elf檔案的魔數,其為del控制符,第5個位元組為01,表示此檔案為32位,第6個位元組01表示小端序。與解析出的標頭檔案內容相一致。
第二行的前2個位元組為0x0002(小端序),表示為此檔案型別為可執行檔案,第3,4位元組為0x0003,表示在intel x86平台執行,第5-8位元組為0x00000001,表示版本號為0x1,第9-12位元組為0x080484b0,表示程式的入口位址。
第三行的前四個位元組為0x00002224,表示段表在檔案中的偏移。第5-8個位元組為0x00000000,為平台資訊,等等後面可依次解析
成員資訊如下:
由上知,elf段表的檔案偏移為0x2224,找到檔案偏移位置,如下
由上知第乙個段表全為空,段表解析就不一一闡述,本檔案的段表資訊如下圖
ELF檔案結構詳解
可重定位檔案 relocatable file 可執行檔案 executable file 共享目標檔案 shared object file 核心轉儲檔案 core dump file 檔案型別可以通過file命令進行檢視 elf檔案頭位於elf檔案的起始位置,它包含整個檔案的靜態資訊,可以通過r...
ELF檔案結構描述
檢視檔案頭 readelf h obj elf32 ehdr 變數名英文名 備註e ident magic elf魔數 class 檔案機器位元組長度 data 資料儲存方式 version 版本os abi 執行平台 abi version abi版本 e type type elf檔案型別 el...
04可重定位目標檔案ELF檔案解析
目錄 一 可重定位目標檔案的特點 二 可重定位目標檔案的格式 可被鏈結 合併 生成可執行檔案或共享目標檔案 靜態鏈結庫檔案由若干個可重定位目標檔案組成 包含 資料 已初始化全域性變數和區域性靜態變數.data和未初始化的全域性變數和區域性靜態變數.bss 包含重定位資訊 指出哪些符號引用處需要重定位...