ELF檔案結構描述

2022-06-07 04:48:06 字數 2636 閱讀 3693

檢視檔案頭 $ readelf -h *.obj

elf32_ehdr

變數名英文名

備註e_ident

magic

elf魔數

class

檔案機器位元組長度

data

資料儲存方式

version

版本os/abi

執行平台

abi version

abi版本

e_type

type

elf檔案型別(elf重定位型別)

e_machine

machine

elf檔案的cpu平台屬性(硬體平台)

e_version

version

elf版本號(硬體平台版本)

e_entry

entry point address

入口位址

e_phoff

start of program headers

程式頭入口

e_shoff

start of section headers

段表在檔案中的偏移

e_word

flags

elf標誌位

e_ehsize

size of this header

elf檔案頭本身的大小

e_phentsize

size of program headers

程式頭長度

e_phnum

number of program headers

程式頭數量

e_shentsize

size of section headers

段表描述符的大小

e_shnum

number of section headers

段表描述符數量

e_shstrndx

section header string table index

段表字串表所載的段在段表中的下標

檢視段表結構 $ readelf -s *.obj

段表的結構比較簡單,它是乙個以「elf32_shdr」結構體為元素的陣列。陣列元素的個數等於段的個數,每個結構體對應乙個段。「elf32_shdr」又被稱為段描述符。

elf32_shdr

變數名英文名

備註sh_name

section name

段名sh_type

section type

段的型別

sh_flags

section flag

段的標誌位

sh_addr

section address

段虛擬位址

sh_offset

section offset

段偏移sh_size

section size

段的長度

sh_link和sh_info

section link and section information

段鏈結資訊

sh_addralign

section address alignment

段位址對齊

sh_entsize

section entry size

項的長度

name

sh_type

sh_flag

sh_link

sh_info

.dynamic

sht_dynamic

shf_alloc + shf_write

該段所使用的字串表在段表中的下標

0.hash

sht_hash

shf_alloc

該段所使用的符號表在段表中的下標

0sht_rel

該段所使用的相應符號表在段表中的下標

該重定位表所作用的段在段表中的下標

sht_rela

.symtab

sht_stmtab

同字串表

作業系統相關的

作業系統相關的

sht_dynsym

.bss

sht_nobits

shf_alloc + shf_write

shn_undef

0.comment

sht_progbits

none

.data

shf_alloc + shf_write

.data1

shf_alloc + shf_write

.debug

none

.line

none

.rodata

shf_alloc

.rodata1

shf_alloc

.text

shf_alloc + shf_execinstr

.note

sht_note

none

.shstrtab

sht_strtab

none

.strtab

如果該elf檔案中有可裝載的段須要用到該字串表,name該字串表也將被裝載到程序空間,則有shf_alloc標誌位

ELF檔案結構詳解

可重定位檔案 relocatable file 可執行檔案 executable file 共享目標檔案 shared object file 核心轉儲檔案 core dump file 檔案型別可以通過file命令進行檢視 elf檔案頭位於elf檔案的起始位置,它包含整個檔案的靜態資訊,可以通過r...

elf檔案結構解析

elf header text data bss section header table string tables symbol tables elf檔案頭包含了整個檔案的基本屬性,如檔案版本,入口位址等,接著就是elf檔案的各個段 linux定義了自己的一套變數體系,如下 自定義型別 描述長度...

ELF檔案結構分析以及常用readElf指令

1 elf檔案型別 三種型別 1 可重定位檔案 relocatable file 2 可執行檔案 executable file 3 共享目標檔案 shared object file dynamic linker可以將中這個檔案與其他rf檔案或者sharedobject組合 2 elf目標檔案格式...