.shstrtabセクションにはnullで終わる文字列を含むフラグはありません。

.shstrtabセクションにはnullで終わる文字列を含むフラグはありません。

readelf -S a.out出力:

[Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Ar
[ 0]                   NULL            00000000 000000 000000 00      0   0  0
[ 1] .text             PROGBITS        08048060 000060 000013 00  AX  0   0 16
[ 2] .rodata           PROGBITS        08048074 000074 00000b 00   A  0   0  4
[ 3] .shstrtab         STRTAB          00000000 00007f 000019 00      0   0  1

.shstrtabの種類は次のとおりです。ストラタップ。しかし、フラグを設定しません。 /bin/trueに似ています。

Flag: SHF_STRINGS: Contains null-terminated strings
Type: SHT_STRTAB: String table

まあ、それは重複しているようです。 StringフラグはString型とは無関係に使用されますか?

ベストアンサー1

SHF_STRINGSその属性は表示されません。System Vアプリケーションバイナリインタフェース、バージョン4.1(草案、1997年3月18日)文書(裏返し発見)ウィキペディアアイテム)、以下にリストされているものが見つかりました。System V ABIアップデート(2009年10月);明らかに追加された内容です2番目の草案(1999年5月3日)ただし、改訂履歴には追加の理由は記載されていません。これはSHF_MERGE、文字列テーブルと非文字列テーブルが誤ってマージ(?)されないように属性とともに導入されたようです。しかし、私が知っている限り、SHF_STRINGS文字列テーブルの外部への参照(およびSHF_MERGEタグ付き項目の影響を受ける方法SHF_STRINGS)やLSBまたはアーキテクチャ固有の文書には参照はありません。

したがって、理論的には、このプロパティを使用してnullで終わる文字列を含む文字列テーブル以外の部分を表示できるように見えますが、SHF_STRINGSこの現象はいつでも発生しません。誰かがこの条項を使用している可能性がありますが、そのような例は見つかりません。

おすすめ記事