私はいくつかのシンボルを取得し、elfファイルのhexeditを取得します。このシンボルがどのセクションに表示されているかをどのように知ることができますか?ELFの文字列テーブル
strtab
とshstrtab
の違いは何ですか?シンボル列の配列もありますか?
私は名前のテーブルにインデックスを取得する場合、それはstrtab
またはshstrtab
でインデックスですか?
私はいくつかのシンボルを取得し、elfファイルのhexeditを取得します。このシンボルがどのセクションに表示されているかをどのように知ることができますか?ELFの文字列テーブル
strtab
とshstrtab
の違いは何ですか?シンボル列の配列もありますか?
私は名前のテーブルにインデックスを取得する場合、それはstrtab
またはshstrtab
でインデックスですか?
最初の質問では、elfファイルのhexeditを正しく理解する必要があります。
2番目の質問の場合 - strtabはストリングテーブルの略です。 shstrtabはセクションヘッダーストリングテーブルの略です。
ELFヘッダーを読むと、すべてのElfHeader構造にe_shstrndxというメンバーが含まれていることがわかります。これはshstrtabのインデックスです。このインデックスを使用してshstrtabから読み取ると、そのセクションの名前を見つけることができます。
strtabは、他のすべての参照用の文字列テーブルです。 ELFオブジェクトからシンボルを読み込むと、すべてのSYmbol構造体(Elf32_Sym)にst_nameという名前のメンバがあります。これは、そのシンボルの文字列名を取得するためのstrtabへのインデックスです。
記号列の配列についてもっと詳しく教えてください。また、名前の表はどういう意味ですか?
あなたは次のリンクを参照することができます - これは、あなたの質問に答える Reading ELF String Table on Linux from C
希望。
ありがとうございました。あなたは "他の参考文献"とは何かの例を挙げてください。セクション名はどうですか?彼らはまた、strtabに表示されますか? – user1479376
数日のうちに空いていました。セクション名は.shstrtabに格納されます。他のすべての参考文献では、DIEブロック –
に保存されている記号を意味します。これは答えとしてマークする必要があります。 – Jichao