2012年2月14日 星期二

elf中的header跟section header

從wikipedia借來一張圖
整個elf檔案包裝大致上類似這樣,如果稍微寫過一些解析圖片或者特定檔案格式的人都知道,file header就是用來儲存跟這個檔案有關的資訊,比方說jpg裡面就會有些圖片大小,壓縮方式跟比例等等的資訊。上圖片中ELF header存有的資訊可以用elfread -h來觀察
很多資訊網路上可以找到,在/usr/include/elf.h上也有定義相對應的結構(c struct),在此就不說了,先提到program header table是optional,在圖片中248 (bytes into files)上,可以看到它是0 bytes。

  • 第一個紅色框框得知section header table相對於檔案的位移(offset),方便直接移動到那處讀取每個section的section header,因為section header是包含許多重要屬性,因為知道有那些section對ld是很重要的
  • 第二個紅色框框可以看到這個檔案包含了多少個sectioin


接著用readelf -S來讀取每個section的資訊
這部分的資料可以從header section table裡面取得,有興趣一樣可以在/usr/include/elf.h上找到對應的結構,其中也包含了各種重要的屬性

參考資料:
http://blog.chinaunix.net/space.php?uid=20547746&do=blog&id=1647100
http://beye.sourceforge.net/en/beye.html

沒有留言:

張貼留言