檢視檔案頭 $ 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目標檔案格式...