1. 程式人生 > >ELF格式檔案

ELF格式檔案

Executable and Linkable Format (可執行與可連結格式 )

常用副檔名o,so,elf,prx

一、概述

1.ELF全稱Executable and Linkable Format,可執行連線格式,ELF格式的檔案用於儲存Linux程式。ELF檔案(目標檔案)格式主要三種:

  • 可重定向檔案:檔案儲存著程式碼和適當的資料,用來和其他的目標檔案一起來建立一個可執行檔案或者是一個共享目標檔案。(目標檔案或者靜態庫檔案,即linux通常字尾為.a和.o的檔案)
  • 可執行檔案:檔案儲存著一個用來執行的程式。(例如bash,gcc等)
  • 共享目標檔案:共享庫。檔案儲存著程式碼和合適的資料,用來被下連線編輯器和動態連結器連結。(linux下字尾為.so的檔案。)
    目標檔案既要參與程式連結又要參與程式執行:

一般的 ELF 檔案包括三個索引表:ELF header,Program header table,Section header table。

  • ELF header:在檔案的開始,儲存了路線圖,描述了該檔案的組織情況。
  • Program header table:告訴系統如何建立程序映像。用來構造程序映像的目標檔案必須具有程式頭部表,可重定位檔案不需要這個表。
  • Section header table:包含了描述檔案節區的資訊,每個節區在表中都有一項,每一項給出諸如節區名稱、節區大小這類資訊。用於連結的目標檔案必須包含節區頭部表,其他目標檔案可以有,也可以沒有這個表。

 

二、分析ELF檔案頭(ELF header)

寫一個小程式(hello)進行編譯,生成hello可執行檔案。使用‘readelf –a hello’命令,都得到下面的ELF Header標頭檔案的資訊,如下圖:

 

 

這裡寫圖片描述

 

這裡寫圖片描述

 

這裡寫圖片描述