문제

나는 복제품을 연구하고있다 elfdump 명령.

내 프로그램은 실행할 때 잘 작동합니다 elfdump -ecps *file* 모든 실행 파일에서. 그러나 라이브러리 파일에서 프로그램을 실행할 때 libc.so는 .symtab 섹션의 모든 기호에 대해 잘못된 버전 번호를 인쇄합니다 (특히 모두 0입니다). 나는 수많은 문서를 살펴 보았지만 왜 이런 일이 일어나고 있는지 알 수 없습니다.

누군가 몇 가지 팁을 제공 할 수 있습니까? 아니면 라이브러리 여부를 감지하는 방법을 감지하는 방법을 하드 코딩 할 수 있습니까?

도움이 되었습니까?

해결책

e_type 필드가 ET_DYN인지 확인하여 공유 라이브러리에 대해 실행 중인지 확인할 수 있습니다. (남자 엘프 (5))

있습니다 기사 엘프의 glibc per-symbol 버전화 트릭을 다루는 Ulrich Drepper. 아마도 당신이 전에 경험하지 않은 추가 정보가있을 것입니다. Linux의 Man Pages는 ELF DOCS의 Symbol 당 버전 정보를 다루는 것으로 보이지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top