Hatena::ブログ(Diary)

ゆずさん研究所

 | 

2013/10/13

【ELF形式】.gnu.hash セクション

| 20:06

セクションヘッダの内容をダンプしてみます。

#
# .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_name0x00000044セクション名".gnu.hash"
.sh_type0x6ffffff6セクションのタイプGNU形式ハッシュテーブル(SHT_GNU_HASH)
.sh_flags0x00000002各種フラグロード時にメモリ上に領域確保するセクション(SHF_ALLOC)
.sh_addr0x080481acロード先アドレス0x080481ac
.sh_offset0x000001acELF形式中でのセクションの位置0x1ac
.sh_size0x00000020セクションのバイトサイズ32バイト
.sh_link0x00000005関連付けられているシンボルテーブルのセクションヘッダインデックス第5セクション(.dynsym)に関連付け
.sh_info0x00000000(同上)-
.sh_addralign0x00000004セクションがメモリにロードされる際のバイトアラインメント4バイト
.sh_entsize0x00000004構造体配列になっているセクションで利用される。配列要素のサイズ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と合わせて見てみたいと思います。

 |