ELF Format 筆記(二)—— ELF Header,elfheader

來源:互聯網
上載者:User

ELF Format 筆記(二)—— ELF Header,elfheader

以 32 位的 ELF header 資料結構為例:

 1 #define EI_NIDENT 16 2 typedef struct { 3     unsigned char e_ident[EI_NIDENT]; 4     Elf32_Half e_type; 5     Elf32_Half e_machine; 6     Elf32_Word e_version; 7     Elf32_Addr e_entry; 8     Elf32_Off e_phoff; 9     Elf32_Off e_shoff;10     Elf32_Word e_flags;11     Elf32_Half e_ehsize;12     Elf32_Half e_phentsize;13     Elf32_Half e_phnum;14     Elf32_Half e_shentsize;15     Elf32_Half e_shnum;16     Elf32_Half e_shstrndx;17 } Elf32_Ehdr;
1、e_ident

ELF 標識。是一個 16 位元組大小的數組,其各個索引位置的位元組資料有固定的含義。

 

前 4 個位元組 e_ident[EI_MAG0] ~ e_ident[EI_MAG3] 的內容固定為 0x7f、’E’、’L’、’F’,標識這是一個 ELF檔案。

e_ident[EI_CLASS] 指明檔案類別:0(無效目標檔案);1(32 位目標檔案);2(64 位元目標檔案)。

e_ident[EI_DATA] 指明位元組序,規定該檔案是大端還是小端:0(無效編碼格式);1(小端);2(大端)。

e_ident[EI_VERSION] 指明 ELF 檔案頭的版本。

從 e_ident[EI_PAD] 到 e_ident[EI_NIDENT-1] 之間的 9 個位元組保留。

2、e_type

檔案類型。常見的:1(可重定位檔案:“.o 檔案”);2(可執行檔);3(共用庫檔案:“.so 檔案”)。

 

3、e_machine

指定該程式在什麼平台上使用,比如 EM_386 表示在 Inter x86 機器上使用。

4、e_version

ELF 檔案版本號碼。

5、e_entry

程式的入口虛擬位址。對於可執行檔來說,當 ELF 檔案載入完成後,將從這個地址開始執行。對於其它檔案,該值為 0。

6、e_phoff / e_shoff

分別指明 Program Header Table 和 Section Header Table 在檔案中的位元組位移量,沒有則為 0。

7、e_flags

處理器特定的標誌位,通常不怎麼關心。

8、e_ehsize

指明 ELF 檔案頭的位元組大小(52 個位元組)。

9、e_phentsize / e_phnum

e_phentsize 指明在 Program Header Table 中的每一項的位元組大小,e_phnum 指明共有多少項。

10、e_shentsize / e_shnum

e_shentsize 指明在 Section Header Table 中的每一項的位元組大小,e_shnum 指明共有多少項。

11、e_shstrndx

在 Section Header Table 中,儲存“節名字表”的 Section(就是 .shstrtab 節)所對應的索引。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.