【ELF形式】.gnu.hash セクション
セクションヘッダの内容をダンプしてみます。
# # .gnu.hash # # セクションヘッダ $ od -x -A x -j0x11ec -N0x28 sample 0011ec 0044 0000 fff6 6fff 0002 0000 81ac 0804 0011fc 01ac 0000 0020 0000 0005 0000 0000 0000 00120c 0004 0000 0004 0000 001214
セクションヘッダの内容は、以下の通り。
Elf_Shdr | バイナリ | 項目 | バイナリの意味 |
---|---|---|---|
.sh_name | 0x00000044 | セクション名 | ".gnu.hash" |
.sh_type | 0x6ffffff6 | セクションのタイプ | GNU形式ハッシュテーブル(SHT_GNU_HASH) |
.sh_flags | 0x00000002 | 各種フラグ | ロード時にメモリ上に領域確保するセクション(SHF_ALLOC) |
.sh_addr | 0x080481ac | ロード先アドレス | 0x080481ac |
.sh_offset | 0x000001ac | ELF形式中でのセクションの位置 | 0x1ac |
.sh_size | 0x00000020 | セクションのバイトサイズ | 32バイト |
.sh_link | 0x00000005 | 関連付けられているシンボルテーブルのセクションヘッダインデックス | 第5セクション(.dynsym)に関連付け |
.sh_info | 0x00000000 | (同上) | - |
.sh_addralign | 0x00000004 | セクションがメモリにロードされる際のバイトアラインメント | 4バイト |
.sh_entsize | 0x00000004 | 構造体配列になっているセクションで利用される。配列要素のサイズ | 4バイト |
セクション内容をダンプしてみます。
#セクション $ od -x -A x -j0x01ac -N0x20 sample 0001ac 0002 0000 0003 0000 0001 0000 0005 0000 0001bc 2000 2000 0000 0000 0003 0000 4bad c0e3 0001cc $ readelf -x4 sample セクション '.gnu.hash' の 十六進数ダンプ: 0x080481ac 02000000 03000000 01000000 05000000 ................ 0x080481bc 00200020 00000000 03000000 ad4be3c0 . . .........K..
.gnu.hashセクションは、.sh_linkを見ると、第5セクション(.dynsym)に関連付けられたハッシュテーブルのようなので、のちほど.dynsymと合わせて見てみたいと思います。