동적 종속성을 구현하기 위해 ELF 변수를 사용하려고 합니다 RUNPATH
. 이 과정에서 Changed 가 bash
포함된 바이너리 복사본을 얻었고 이를 실행하면 다음이 반환됩니다.RUNPATH
ldd
$ ldd ./bash
linux-vdso.so.1 => (0x00007ffe6bdf9000)
libtinfo.so.5 (0x00007fbf8b97c000)
libdl.so.2 (0x00007fbf8b776000)
libc.so.6 (0x00007fbf8b3a5000)
/lib64/ld-linux-x86-64.so.2 (0x00007fbf8bba7000)
-- 내 사용자 정의 항목에서 종속 항목에 대한 경로가 없는 이유는 무엇입니까 RUNPATH
? not found
이것이 의미하는 바는 무엇입니까?
내 추측은 다음과 같습니다.
ldd
파일을 찾을 수 없지만 메모리에 있고(괄호 안의 숫자는 주소입니다) ldd
현금 메커니즘을 통해 어떻게든 알려지고 있습니다. 이것이 맞습니까? 그런데 왜 ldd
파일을 찾을 수 없나요? 에서 가져올 수 없으면 RUNPATH
표준 디렉터리로 계속 이동해야 합니다. 그렇죠?
고쳐 쓰다
오늘 파일을 찾았습니다(그래서 이것은 어제 현금이었습니까?).
$ cd dir_chroot2/
$ ldd ./bash
linux-vdso.so.1 => (0x00007ffed3530000)
libtinfo.so.5 => /home/.../dir_chroot2/./libtinfo.so.5 (0x00007f72c14a8000)
libdl.so.2 => /home/.../dir_chroot2/./libdl.so.2 (0x00007f72c12a1000)
libc.so.6 => /home/.../dir_chroot2/./libc.so.6 (0x00007f72c0ed0000)
/lib64/ld-linux-x86-64.so.2 (0x00007f72c16d4000)
- 바이너리와 모든 라이브러리가 있음에도 ld-linux-x86-64.so.2
불구하고 여전히 시스템 디렉토리에서 가져옵니다 . 이유는 무엇입니까? 어떻게 든 연결 되어 있습니까 ?bash
RUNPATH=$ORIGIN/
linux-vdso.so.1