readelf -d
Rekursion
redelf -d
erzeugt eine ähnliche Ausgabe, objdump -p
die unter https://stackoverflow.com/a/15520982/895245 erwähnt wurde
Beachten Sie jedoch, dass dynamische Bibliotheken von anderen dynamischen Bibliotheken abhängen können, auf die Sie zurückgreifen müssen.
Beispiel:
readelf -d /bin/ls | grep 'NEEDED'
Beispiel ouptut:
0x0000000000000001 (NEEDED) Shared library: [libselinux.so.1]
0x0000000000000001 (NEEDED) Shared library: [libacl.so.1]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
Dann:
$ 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
Wählen Sie eine aus und wiederholen Sie:
readelf -d /lib/x86_64-linux-gnu/libselinux.so.1 | grep 'NEEDED'
Beispielausgabe:
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]
Und so weiter.
/proc/<pid>/maps
zum Ausführen von Prozessen
Dies ist nützlich, um alle Bibliotheken zu finden, die derzeit von ausführbaren Dateien verwendet werden. Z.B:
sudo awk '/\.so/{print $6}' /proc/1/maps | sort -u
zeigt alle aktuell geladenen dynamischen Abhängigkeiten von 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
Diese Methode zeigt auch Bibliotheken dlopen
, die mit diesem minimalen Setup geöffnet und getestet wurden, das mit einem sleep(1000)
unter Ubuntu 18.04 gehackten Setup gehackt wurde .
Siehe auch: /superuser/310199/see-currently-loaded-shared-objects-in-linux/1243089
dlopen
.