アドレスのELF部分を自動的に取得する方法はありますか?

アドレスのELF部分を自動的に取得する方法はありますか?

elf バイナリ出力にどの文字列や記号のアドレスがあり、アドレスがstrings -aどの部分にあるかを知りたいとします。

objdump -h通常、アドレスを含む部分アドレス範囲を手動で検索します。しかし、これはエラーが発生しやすく、非常に遅いです。

これを行うより簡単な方法はありますか?

ベストアンサー1

探しているアドレスを知っている場合(バイナリのオフセットで)、次のように使用できます。

objdump -h /path/to/binary |
awk -v target=address 'BEGIN { target = strtonum("0x" target) }
                       NF > 1 {
                        if (typeof($1) == "strnum") {
                          if (strtonum("0x" $6) <= target) { section = $2 }
                        }
                       }
                       END { print section }'

16進数アドレスに置き換えますaddress

$6この値は、バイナリオフセットの代わりに仮想アドレスを取得するようにフィールド()を変更することによって調整できます。

おすすめ記事