IT 그리고 정보보안/Knowledge base

ldd (List Dynamic Dependencies)

plummmm 2021. 4. 18. 19:54
반응형

objdump나 readelf 명령으로 프로그램에서 어떤 공유 라이브러리를 사용하는지 

확인이 가능하지만, 사용된 공유 라이브러리가 또 어떤 다른 라이브러리를 사용하는지에

대한 관계를 알아보려면 번거롭다. 그래서 한번에 의존 관계를 알 수 있는 명령이 ldd 이다.

 

 

 

위와 같이 실행 파일이 필요로 하는 공유 라이브러리의 경로와 할당된 메모리 주소를 다 확인이 가능하다.

근데 사실은 이 명령어보다 중요한게 환경변수 LD_TRACE_LOADED_OBJECTS 이다.

ldd는 끽해야 셸 스크립트에 불가하다. 환경변수 LD_TRACE_LOADED_OBJECTS를  1로 설정하면

프로그램 실행 시점에서 elf 인터프리터가 필요한 공유 라이브러리를 메모리에 로딩시키고 화면에 정보를 출력하고

프로그램 실행 전에 종료한다. 즉, ldd와 같은 결과를 확인이 가능하다.

 

 

 

실행시킬 때 하는 작업이므로 실행 가능한 파일만 되겠지?

레드햇 9.0 이나 일부 리눅스 배포판에는 공유라이브러리 자체에 실행권한을 주어서

LD_TRACE_LOADED_OBJECTS=1 으로도 확인이 가능하다고 함.

 

 

반응형

'IT 그리고 정보보안 > Knowledge base' 카테고리의 다른 글

정적 라이브러리 (Static Library)  (0) 2021.04.18
오브제트 파일 관련 명령어 (objdump, objcopy, nm)  (0) 2021.04.18
ELF File Format  (0) 2021.04.18
od(octal dump)  (0) 2021.04.18
C언어 컴파일 과정  (0) 2021.04.18