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여기에는 전이적 종속성도 처리하므로 표시된 라이브러리보다 더 많은 라이브러리가 포함될 수 있습니다 .

관련 정보