readelf -d
рекурсия
redelf -d
производит аналогичный выход objdump -p
, который был упомянут в: https://stackoverflow.com/a/15520982/895245
Но имейте в виду, что динамические библиотеки могут зависеть от других динамических библиотек, которые вы должны использовать
Пример:
readelf -d /bin/ls | grep 'NEEDED'
Образец выхода:
0x0000000000000001 (NEEDED) Shared library: [libselinux.so.1]
0x0000000000000001 (NEEDED) Shared library: [libacl.so.1]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
Тогда:
$ locate libselinux.so.1
/lib/i386-linux-gnu/libselinux.so.1
/lib/x86_64-linux-gnu/libselinux.so.1
/mnt/debootstrap/lib/x86_64-linux-gnu/libselinux.so.1
Выберите один и повторите:
readelf -d /lib/x86_64-linux-gnu/libselinux.so.1 | grep 'NEEDED'
Пример вывода:
0x0000000000000001 (NEEDED) Shared library: [libpcre.so.3]
0x0000000000000001 (NEEDED) Shared library: [libdl.so.2]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
0x0000000000000001 (NEEDED) Shared library: [ld-linux-x86-64.so.2]
и т. Д.
/proc/<pid>/maps
для запущенных процессов
Это полезно, чтобы найти все библиотеки, которые в данный момент используются исполняемыми файлами. E.g.:
sudo awk '/\.so/{print $6}' /proc/1/maps | sort -u
показывает все загруженные в данный момент динамические зависимости init
(PID 1
):
/lib/x86_64-linux-gnu/ld-2.23.so
/lib/x86_64-linux-gnu/libapparmor.so.1.4.0
/lib/x86_64-linux-gnu/libaudit.so.1.0.0
/lib/x86_64-linux-gnu/libblkid.so.1.1.0
/lib/x86_64-linux-gnu/libc-2.23.so
/lib/x86_64-linux-gnu/libcap.so.2.24
/lib/x86_64-linux-gnu/libdl-2.23.so
/lib/x86_64-linux-gnu/libkmod.so.2.3.0
/lib/x86_64-linux-gnu/libmount.so.1.1.0
/lib/x86_64-linux-gnu/libpam.so.0.83.1
/lib/x86_64-linux-gnu/libpcre.so.3.13.2
/lib/x86_64-linux-gnu/libpthread-2.23.so
/lib/x86_64-linux-gnu/librt-2.23.so
/lib/x86_64-linux-gnu/libseccomp.so.2.2.3
/lib/x86_64-linux-gnu/libselinux.so.1
/lib/x86_64-linux-gnu/libuuid.so.1.3.0
Этот метод также показывает библиотеки, открытые с dlopen
, протестированы с , эта минимальная установка взломана с sleep(1000)
в Ubuntu 18.04.
Смотри также: https://superuser.com/questions/310199/see-currently-loaded-shared-objects-in-linux/1243089