青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 297,  comments - 15,  trackbacks - 0

1. 概述

Executable and linking format(ELF)文件是x86 Linux系統下的一種常用目標文件(object file)格式,有三種主要類型:

(1)適于連接的可重定位文件(relocatable file),可與其它目標文件一起創建可執行文件和共享目標文件。

(2)適于執行的可執行文件(executable file),用于提供程序的進程映像,加載的內存執行。

(3)共享目標文件(shared object file),連接器可將它與其它可重定位文件和共享目標文件連接成其它的目標文件,動態連接器又可將它與可執行文件和其它共享目標文件結合起來創建一個進程映像。

ELF文件格式比較復雜,本文只是簡要介紹它的結構,希望能給想了解ELF文件結構的讀者以幫助。具體詳盡的資料請參閱專門的ELF文檔。

2. 文件格式

為了方便和高效,ELF文件內容有兩個平行的視角:一個是程序連接角度,另一個是程序運行角度,如圖1所示。

ELF header在文件開始處描述了整個文件的組織,Section提供了目標文件的各項信息(如指令、數據、符號表、重定位信息等),Program header table指出怎樣創建進程映像,含有每個program header的入口,Section header table包含每一個section的入口,給出名字、大小等信息。

圖1

3. 數據表示

ELF數據編碼順序與機器相關,數據類型有六種,見表1。

4. ELF文件頭

象bmp、exe等文件一樣,ELF的文件頭包含整個文件的控制結構。它的定義如下:

#define EI_NIDENT 16
typedef struct{
unsigned char e_ident[EI_NIDENT];
Elf32_Half e_type;
Elf32_Half e_machine;
Elf32_Word e_version;
Elf32_Addr e_entry;
Elf32_Off e_phoff;
Elf32_Off e_shoff;
Elf32_Word e_flags;
Elf32_Half e_ehsize;
Elf32_Half e_phentsize;
Elf32_Half e_phnum;
Elf32_Half e_shentsize;
Elf32_Half e_shnum;
Elf32_Half e_shstrndx;
}Elf32_Ehdr;

其中E_ident的16個字節標明是個ELF文件(7F+'E'+'L'+'F'+class +data+version+pad)。E_type表示文件類型,2表示可執行文件。E_machine說明機器類別,3表示386機器,8表示MIPS機器。E_entry給出進程開始的虛地址,即系統將控制轉移的位置。E_phoff指出program header table的文件偏移,e_phentsize表示一個program header表中的入口的長度(字節數表示),e_phnum給出program header表中的入口數目。類似的,e_shoff,e_shentsize,e_shnum 分別表示section header表的文件偏移,表中每個入口的的字節數和入口數目。E_flags給出與處理器相關的標志,e_ehsize給出ELF文件頭的長度(字節數表示)。E_shstrndx表示section名表的位置,指出在section header表中的索引。

下面有個elf文件頭的例子,可以對照理解,見圖2。

圖2

5. section header

目標文件的section header table可以定位所有的section,它是一個Elf32_Shdr結構的數組,Section頭表的索引是這個數組的下標。有些索引號是保留的,目標文件不能使用這些特殊的索引。

Section包含目標文件除了ELF文件頭、程序頭表、section頭表的所有信息,而且目標文件section滿足幾個條件:

(1)目標文件中的每個section都只有一個section頭項描述,可以存在不指示任何section的section頭項。

(2)每個section在文件中占據一塊連續的空間。

(3)Section之間不可重疊。

(4)目標文件可以有非活動空間,各種headers和sections沒有覆蓋目標文件的每一個字節,這些非活動空間是沒有定義的。

Section header結構定義如下:

typedef struct{
Elf32_Word sh_name;
Elf32_Word sh_type;
Elf32_Word sh_flags;
Elf32_Addr sh_addr;
Elf32_Off sh_offset;
Elf32_Word sh_size;
Elf32_Word sh_link;
Elf32_Word sh_info;
Elf32_Word sh_addralign;
Elf32_Word sh_entsize;
}Elf32_Shdr;

其中sh_name指出section的名字,它的值是后面將會講到的section header string table中的索引,指出一個以null結尾的字符串。Sh_type是類別,sh_flags指示該section在進程執行時的特性。Sh_addr指出若此section在進程的內存映像中出現,則給出開始的虛地址。Sh_offset給出此section在文件中的偏移。其它字段的意義不太常用,在此不細述。

文件的section含有程序和控制信息,系統使用一些特定的section,并有其固定的類型和屬性(由sh_type和sh_info指出)。下面介紹幾個常用到的section:“.bss”段含有占據程序內存映像的未初始化數據,當程序開始運行時系統對這段數據初始為零,但這個section并不占文件空間。“.data.”和“data1”段包含占據內存映像的初始化數據。“.rodata”和“.rodata1”段含程序映像中的只讀數據。“.shstrtab”段含有每個section的名字,由section入口結構中的sh_name索引。“.strtab”段含有表示符號表(symbol table)名字的字符串。“.symtab”段含有文件的符號表,在后文專門介紹。“.text”段包含程序的可執行指令。

6. symbol table

目標文件的符號表包含定位或重定位程序符號定義和引用時所需要的信息。符號表入口結構定義如下:

typedef struct{
Elf32_Word st_name;
Elf32_Addr st_value;
Elf32_Word st_size;
Unsigned char st_info;
Unsigned char st_other;
Elf32_Half st_shndx;
}Elf32_Sym;

其中st_name包含指向符號表字符串表(strtab)中的索引,從而可以獲得符號名。St_value指出符號的值,可能是一個絕對值、地址等。St_size指出符號相關的內存大小,比如一個數據結構包含的字節數等。St_info規定了符號的類型和綁定屬性,指出這個符號是一個數據名、函數名、section名還是源文件名;并且指出該符號的綁定屬性是local、global還是weak。

轉自:

http://tech.ccidnet.com/art/305/20020126/9179_1.html

posted on 2009-11-21 18:52 chatler 閱讀(387) 評論(0)  編輯 收藏 引用 所屬分類: FileFormat
<2009年2月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
1234567

常用鏈接

留言簿(10)

隨筆分類(307)

隨筆檔案(297)

algorithm

Books_Free_Online

C++

database

Linux

Linux shell

linux socket

misce

  • cloudward
  • 感覺這個博客還是不錯,雖然做的東西和我不大相關,覺得看看還是有好處的

network

OSS

  • Google Android
  • Android is a software stack for mobile devices that includes an operating system, middleware and key applications. This early look at the Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.
  • os161 file list

overall

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久婷婷激情| 亚洲国产毛片完整版| 美日韩免费视频| 亚洲电影视频在线| 中文在线资源观看网站视频免费不卡 | 蜜桃久久精品乱码一区二区| 欧美精品在线观看一区二区| 国产精品一区久久久| 在线不卡欧美| 亚洲一区二区三区四区五区午夜| 久久久精品动漫| 亚洲激情精品| 欧美一区二区三区四区夜夜大片| 免费观看一级特黄欧美大片| 国产精品久久久久久户外露出 | 久久久99爱| 亚洲精品国产精品久久清纯直播| 亚洲一区亚洲| 欧美黑人在线观看| 国产色视频一区| 中国成人在线视频| 美女91精品| 亚洲综合色丁香婷婷六月图片| 免费欧美视频| 国产亚洲精品资源在线26u| 日韩午夜在线观看视频| 久久精品国产一区二区三| 亚洲精品资源| 久久这里只有精品视频首页| 国产精品欧美日韩一区二区| 亚洲精品婷婷| 狼人社综合社区| 亚洲尤物在线| 欧美视频一区二区三区| 亚洲第一成人在线| 久久精品99国产精品日本| 一本久道综合久久精品| 免费欧美在线视频| 国产综合第一页| 欧美一区二区大片| 99亚洲一区二区| 欧美激情精品久久久久久大尺度| 合欧美一区二区三区| 亚洲一区二区三区在线看| 亚洲高清一二三区| 久久久水蜜桃| 国内精品伊人久久久久av影院 | 一区二区三区色| 欧美日韩爆操| 99精品久久久| 91久久极品少妇xxxxⅹ软件| 久久综合色婷婷| 影音先锋另类| 免费亚洲电影在线| 久久久亚洲国产天美传媒修理工| 国产香蕉久久精品综合网| 午夜久久久久久| 日韩亚洲国产欧美| 欧美日韩国产不卡| 一本久久青青| 99re6热在线精品视频播放速度| 欧美精品一区二区三区高清aⅴ| 91久久午夜| 亚洲国产精品成人一区二区| 免费成人黄色av| 最新日韩在线| 91久久精品国产91性色tv| 欧美黑人多人双交| 一级成人国产| 在线亚洲精品| 国产精品视频午夜| 欧美在线亚洲在线| 欧美亚洲在线| 伊大人香蕉综合8在线视| 狂野欧美一区| 男人的天堂亚洲| 亚洲人午夜精品免费| 亚洲国产欧美国产综合一区| 欧美精品一区二区三区高清aⅴ| 日韩午夜激情| 一区二区三区高清| 国产欧美日韩视频一区二区三区| 久久精品免费| 久久一区二区三区四区| 亚洲国产精品综合| 亚洲精品少妇网址| 国产精品r级在线| 久久成人在线| 久久免费观看视频| 日韩视频免费在线观看| 亚洲青色在线| 国产精品女主播| 久久精品中文字幕免费mv| 久久免费视频在线| 一本色道久久综合精品竹菊| 99亚洲伊人久久精品影院红桃| 国产精品视频不卡| 久久久另类综合| 欧美韩国在线| 亚洲男人天堂2024| 久久精品30| 亚洲最黄网站| 亚洲一区欧美| 91久久精品日日躁夜夜躁国产| 99riav久久精品riav| 国产嫩草一区二区三区在线观看 | 欧美成人一区二免费视频软件| 欧美国产精品| 欧美一区二区日韩一区二区| 久久天天躁夜夜躁狠狠躁2022 | 亚洲欧美日韩久久精品| 久久丁香综合五月国产三级网站| 亚洲激情视频网| 亚洲网站在线| 亚洲国产欧美另类丝袜| 一级日韩一区在线观看| 国内自拍视频一区二区三区| 亚洲国产另类精品专区| 国产精品一二三视频| 亚洲福利在线看| 国产精品一区二区三区久久久 | 亚洲天堂网站在线观看视频| 欧美亚洲自偷自偷| 日韩一级网站| 久久精品国产第一区二区三区最新章节 | 久久福利电影| 亚洲色图制服丝袜| 久久精品欧洲| 午夜国产欧美理论在线播放| 鲁鲁狠狠狠7777一区二区| 香蕉av福利精品导航| 欧美激情免费在线| 久久久久久成人| 欧美午夜视频在线观看| 欧美**人妖| 国产亚洲激情在线| 亚洲美女在线观看| 在线免费观看日本欧美| 亚洲欧美激情视频| 一区二区三区高清在线观看| 久久久一区二区| 欧美一级片一区| 欧美日韩在线播| 亚洲国产精品一区在线观看不卡| 国产亚洲精品久久久| 99在线观看免费视频精品观看| 亚洲第一成人在线| 午夜在线视频观看日韩17c| 亚洲视频视频在线| 欧美电影在线观看| 麻豆精品精华液| 国产专区精品视频| 亚洲欧美日韩在线综合| 亚洲一区二区精品在线观看| 欧美大片一区二区| 女仆av观看一区| 狠狠色狠狠色综合日日tαg | 久久se精品一区二区| 欧美日韩不卡| 亚洲黄色在线| 亚洲精品小视频在线观看| 久久伊人一区二区| 乱码第一页成人| 国内外成人免费激情在线视频| 亚洲欧美激情四射在线日 | 国产精品区一区二区三| 99国产麻豆精品| 在线视频一区观看| 欧美日韩福利视频| 亚洲精品欧美极品| 一本久久a久久免费精品不卡| 欧美 日韩 国产 一区| 欧美成人精品福利| 亚洲国产精品国自产拍av秋霞| 久久久91精品国产一区二区精品| 久久久另类综合| 一区在线观看| 美女亚洲精品| 亚洲二区在线视频| 亚洲麻豆一区| 欧美精品手机在线| 亚洲精品免费一区二区三区| 9久草视频在线视频精品| 欧美精品色网| 一区二区三区免费观看| 亚洲综合日韩中文字幕v在线| 国产精品久久国产精品99gif| 国产精品99久久久久久人| 亚洲在线视频观看| 国产精品永久入口久久久| 西西裸体人体做爰大胆久久久| 久久精品一区二区三区不卡牛牛| 国产在线视频欧美一区二区三区| 久久精品国产v日韩v亚洲 | 欧美精品www| 中国成人黄色视屏| 久久福利毛片| 亚洲国产成人不卡| 欧美欧美全黄| 亚洲免费视频在线观看|