

elfファイルの.rodataセクションに含まれる文字列リテラルのみを全て表示する方法はありますか？


CC BY-SA 3.0
2016-12-21T10:28:16.453
31295
2016-12-22T16:39:17.157
19513
question
linux
elfファイル中の文字列リテラルの表示

[code]

    $ objdump -s -j .rodata FILE
    
[/code]

でしょうか。


CC BY-SA 3.0
2016-12-21T16:07:27.097
31300
2016-12-22T05:28:12.757
2016-12-22T05:28:12.757
17037
17037
31295
answer


**readelf**

[code]

    $ readelf -p \.rodata ELF
    
[/code]

**objcopy + strings**

[code]

    $ objcopy ELF /dev/null --dump-section \.rodata=/dev/stdout | strings -n1
    
[/code]

\--dump-section というオプション名の通りに、指定セクションの内容をそのまま出力して、strings コマンドで printable
characters のみを取り出します。ただ、printable characters とは言っても 7-bit byte
character(ASCII, ISO 8859, etc.) のみですので、UTF-8 の様な 8-bit byte character
は除去されてしまいます。

[code]

    $ echo 'Hello World おはよう、世界' | strings
    Hello World 
    
[/code]

なお、GNU binutils の strings コマンドの場合には 8-bit byte character も取り出す事ができます。

[code]

    $ strings --version
    GNU strings (GNU Binutils for Ubuntu) 2.27.51.20161220
    $ echo 'Hello World おはよう、世界' | strings --encoding=S
    Hello World おはよう、世界
    
[/code]


CC BY-SA 3.0
2016-12-22T16:39:17.157
31319
2016-12-22T16:39:17.157
31295
answer