elfファイルからカーネルシンボルオフセットを決定する

elfファイルからカーネルシンボルオフセットを決定する

extract-vmlinuxを使用してbzImageからELFファイル(削除済み)を抽出し、__ksymtabおよび__ksymtab_strings部分を抽出しました。

これら2つのファイルのシンボルのオフセットをどのように計算できますか?

オフセットは実際に__ksymtabセクションに保存されていますか? __ksymtab_stringsセクションにどのようにリンクされていますか?

静的にオフセットを取得できますか?私の主な目的は、このELFファイル(削除済み)から任意のカーネルシンボルのオフセット(カーネルベース)を取得することです。

特定のカーネルバージョン(4.13.0-rc3)のランダムカーネルシンボルのオフセットを取得するには?

よろしくお願いします。

ベストアンサー1

知っていた。

__ksymtab エントリは __ksymtab_strings セクションに直接リンクされます。

このチュートリアルのように、linux + busyboxイメージを作成するときに__ksymtabセクションと__ksymtab_stringsセクションがない理由を誰か教えてください。

http://www.zachpfeffer.com/single-post/Build-the-Linux-kernel-and-Busybox-and-run-on-QEMU

カーネルをコンパイルする前にこれらのオプションを有効にしても:

CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
CONFIG_KALLSYMS_BASE_RELATIVE=y

この場合、ksymオフセットテーブルは.rodataセクションにあります。

elfファイルでこれらのセクションを使用するのはなぜですか?

おすすめ記事