天天看點

ELF檔案結構重點詳解

  • Header(頭部):ELF header在檔案開始處描述了整個檔案的組織,如程式頭表的位置和數量,節頭表的位置和數量,等
  • Program header table(程式頭表):指出怎樣建立程序映像(指出Load segment的位置),含有每個program header的入口
  • Section(節區):Section提供了目标檔案的各項資訊(如指令、資料、符号表、重定位資訊等)
  • Section header table(節頭表):section header table包含每一個section的入口,給出名字、大小等資訊
    ELF檔案結構重點詳解
    ELF可執行檔案的内部資訊,定位與細節關系說明:
    ELF檔案結構重點詳解
    ELF header、Program header table 和 Section header table 都是結構體。通過結構體内部數值記錄資訊的位置,結構體之間環環相扣,構成此ELF檔案的輪廓,記錄且定位整個檔案的所有資訊。而了解整個ELF檔案的第一步且重要的一步是了解ELF header。

頭部結構體:

ELF檔案結構重點詳解

ELF檔案的頭部記錄了很多資訊,而程式頭表的數量與位置,和節頭表的位置與數量的記錄,準确地表明了此ELF檔案内部資訊分布的架構。

程式頭表結構體:

ELF檔案結構重點詳解

程式頭表結構體記錄了該段的類型,與該段是否需要加載至記憶體,和在加載至記憶體中的那個位置等一系列資訊。其中p_type的值如果是load,則表明這段資訊是我們所需要簽名的 Load segment 段。

節頭表結構體:

ELF檔案結構重點詳解

節頭表指向節區,并且節頭表記錄了該節區的名字,類型,位置,長度等諸多資訊。SHT_SHLIB為節頭表的sh_type的保留值。

繼續閱讀