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