linux下的elf结构,ELF结构详细分析(1)---elf32_hdr
ELF(Executable and Linkable Format)可執(zhí)行和可鏈接格式是一種對(duì)象文件格式,分為三種類型:
a.可重定位目標(biāo)文件:包含了適合用來鏈接其他目標(biāo)文件的代碼和數(shù)據(jù),從而創(chuàng)建出可執(zhí)行或可共享的目標(biāo)文件
b.可執(zhí)行目標(biāo)文件:包含用于執(zhí)行的程序,該文件規(guī)定了exec如何創(chuàng)建一個(gè)程序的進(jìn)程映像
c.共享目標(biāo)文件:包含用來在兩個(gè)上下文之間鏈接的代碼和數(shù)據(jù)
注:可重定位目標(biāo)文件和共享目標(biāo)文件用于程序鏈接,可執(zhí)行目標(biāo)文件用于程序執(zhí)行
因?yàn)閷?duì)于目標(biāo)文件兩種用途,因此目標(biāo)文件的組織結(jié)構(gòu)有兩種:一種是用于鏈接的鏈接格式,另一種是用于執(zhí)行的執(zhí)行格式.
在詳解這兩種格式之前,先列出ELF文件中常用的數(shù)據(jù)類型(格式)
這兩種格式中,ELF頭部都位于文件的開始部分,位置固定,描述了該文件的組織情況,下面是它的具體內(nèi)容
elf32_hdr(一個(gè)52個(gè)字節(jié)):
下面詳細(xì)描述其中的內(nèi)容(不加說明,值全是16進(jìn)制):
1. e_ident,ident估計(jì)是identity的縮寫,身份識(shí)別的意思.
這是一個(gè)總大小為16字節(jié)的數(shù)據(jù),每個(gè)元素是占一個(gè)字節(jié)的unsigned char
2. e_type:表示文件屬于下面的哪一種類型
3. e_machine:表示體系結(jié)構(gòu)
4. e_version:目前版本
5. e_entry:程序入口地址
6. e_phoff:程序頭部表的文件偏移,00000000表示沒有程序頭部表
7. e_shoff:節(jié)區(qū)頭部表的文件偏移
8. e_flags:處理器特定標(biāo)記
9. e_ehsize:elf頭部長(zhǎng)度,值是0034,表示十進(jìn)制52
10.e_phentsize:程序頭部表(段頭部表)一個(gè)表項(xiàng)的大小
11.e_phnum:程序頭部表表項(xiàng)數(shù)量
12.e_shentsize:節(jié)區(qū)頭部表一個(gè)表項(xiàng)的大小
13.e_shnum:節(jié)區(qū)頭部表表項(xiàng)數(shù)量
14.e_shstrndx:保存著節(jié)名字的節(jié)(section)對(duì)應(yīng)的表項(xiàng)在節(jié)區(qū)頭部表中的索引
總結(jié)
以上是生活随笔為你收集整理的linux下的elf结构,ELF结构详细分析(1)---elf32_hdr的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: docker网络模式与资源控制
- 下一篇: “燕云十六将”之Jason郝钰(12)