elf檔案結構解析

2021-09-25 19:54:04 字數 1558 閱讀 6758

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 包含重定位資訊 指出哪些符號引用處需要重定位...