読者です 読者をやめる 読者になる 読者になる

ELFのセクションについて

たぶんこんな感じなんだと思う。たぶん。

 

ELFヘッダ : MagicNumber, bit, エンディアン, CPU, 後続のヘッダへのポインタ

プログラムヘッダ : ローダのための情報。つまりセグメントの情報と動的リンク関係が格納。
.interp : インタープリタのファイルパスが格納
.hash : ハッシュ値とシンボルアドレスのハッシュテーブル。
.dynsym : .hashでハッシュ化されたシンボル名(ハッシュ値)とシンボル情報(シンボルアドレスやシンボル名など)のテーブル。
.dynstr : .dynsymから参照したシンボル名が格納。.dynamicから参照した共有ライブラリのファイル名が格納。
.rel.plt : 動的リンクのために書き換えが必要なアドレス(.plt一行目のアドレス)とシンボル情報のリスト。
.plt : .textから共有ライブラリ内の関数へ飛ぶ際の中継点。
.text : 機械語コードが格納。
.dynamic : 動的リンクに必要な情報が格納。共有ライブラリの名前や.hashのアドレス、.dynstrのアドレス、.dynstrのサイズなどなど。
.got.plt : .plt一行目のjmp先のアドレス(書き換え先アドレス)と共有ライブラリ内の関数のアドレス(書き換えアドレス)のテーブル
.shstrtab : セクション名の文字列リスト。
セクションヘッダ : セクションの情報が格納。