/usr/bin/ls
ELF 파일( ) 로 가져온 공유 라이브러리의 전체 경로를 덤프하려고 합니다.
사용: 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
여기에는 전이적 종속성도 처리하므로 표시된 라이브러리보다 더 많은 라이브러리가 포함될 수 있습니다 .