Shared-Library

ELF:轉儲二進製文件導入的.so文件的路徑

  • February 28, 2022

我正在嘗試轉儲由 ELF 文件 ( /usr/bin/ls)導入的共享庫的完整路徑

使用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,但是有什麼方法可以在不執行該文件的情況下執行此操作嗎?

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,因為它也將處理傳遞依賴項。

引用自:https://unix.stackexchange.com/questions/692461