ELF:インポートされたバイナリダンプの.soファイルへのパス

ELF:インポートされたバイナリダンプの.soファイルへのパス

/usr/bin/lsELFファイル()にインポートされた共有ライブラリのフルパスをダンプしようとしています。

使用:readelf --dyn-syms /usr/bin/ls ライブラリ名はわかりますが、ファイルシステム内の場所は不明です。

101: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND [...]@LIBSELINUX_1.0 (4)

以下を使用して、objdump -T /usr/bin/lsより多くの情報(関数名を含む)を取得できます。

0000000000000000      DF *UND*  0000000000000000 (LIBSELINUX_1.0) getfilecon

これは役に立つ情報です。しかし、ディスクからライブラリの場所を抽出するにはどうすればよいですか?ファイルを実行して何を開くかを確認できますがlsof、ファイルを実行せずにこれを行う方法はありますか?

ベストアンサー1

これは以下のlddためのものです:

$ ldd /bin/ls
    linux-vdso.so.1 (0x00007ffd67705000)
    libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f25aaab6000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f25aa8f1000)
    libpcre2-8.so.0 => /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0 (0x00007f25aa859000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f25aa853000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f25aab52000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f25aa831000)

readelfこれには遷移的な依存関係も処理されるため、表示されているライブラリよりも多くのライブラリを含めることができます。

おすすめ記事