바이너리 동적 라이브러리 링크 확인, Dynamic linker
readelf 명령을 이용하여 바이너리가 어떤 동적 라이브러리를 링크하고 있는지 확인해본다.
해당 명령어는 ELF files의 정보를 나타내고 각 옵션을 통해 다양한 정보를 취득할 수 있다.
본인은 여기서 동적 라이브러리 정보만 다룰 것이니 자세한 옵션 목록은 아래 man page를 참고하자.
본인은 여기서 동적 라이브러리 정보만 다룰 것이니 자세한 옵션 목록은 아래 man page를 참고하자.
https://man7.org/linux/man-pages/man1/readelf.1.html
명령 수행 : readelf -d [대상]
-d 옵션을 이용하여 동적 섹션정보만 확인한다.
% readelf -d /usr/bin/expect
Dynamic section at offset 0x1dc8 contains 28 entries:
Tag Type Name/Value
0x0000000000000001 (NEEDED) Shared library: [libexpect5.45.so]
0x0000000000000001 (NEEDED) Shared library: [libtcl8.5.so]
0x0000000000000001 (NEEDED) Shared library: [libdl.so.2]
0x0000000000000001 (NEEDED) Shared library: [libm.so.6]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
0x000000000000000c (INIT) 0x400b28
0x000000000000000d (FINI) 0x400f04
0x0000000000000019 (INIT_ARRAY) 0x601db0
0x000000000000001b (INIT_ARRAYSZ) 8 (bytes)
0x000000000000001a (FINI_ARRAY) 0x601db8
0x000000000000001c (FINI_ARRAYSZ) 8 (bytes)
0x000000006ffffef5 (GNU_HASH) 0x400298
0x0000000000000005 (STRTAB) 0x400670
0x0000000000000006 (SYMTAB) 0x4002f8
0x000000000000000a (STRSZ) 566 (bytes)
0x000000000000000b (SYMENT) 24 (bytes)
0x0000000000000015 (DEBUG) 0x0
0x0000000000000003 (PLTGOT) 0x602000
0x0000000000000002 (PLTRELSZ) 384 (bytes)
0x0000000000000014 (PLTREL) RELA
0x0000000000000017 (JMPREL) 0x4009a8
0x0000000000000007 (RELA) 0x400930
0x0000000000000008 (RELASZ) 120 (bytes)
0x0000000000000009 (RELAENT) 24 (bytes)
0x000000006ffffffe (VERNEED) 0x4008f0
0x000000006fffffff (VERNEEDNUM) 1
0x000000006ffffff0 (VERSYM) 0x4008a6
0x0000000000000000 (NULL) 0x0
이 중 'NEEDED' 만 추려서 다시 보자.
명령 수행 : readelf -d [대상] | grep 'NEEDED'
% readelf -d /usr/bin/expect | grep 'NEEDED'
4: 0x0000000000000001 (NEEDED) Shared library: [libexpect5.45.so]
5: 0x0000000000000001 (NEEDED) Shared library: [libtcl8.5.so]
6: 0x0000000000000001 (NEEDED) Shared library: [libdl.so.2]
7: 0x0000000000000001 (NEEDED) Shared library: [libm.so.6]
8: 0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
해당 바이너리가 어떤 동적 라이브러리를 링크하고 있는지 확인할 수 있다.
가리키고 있는 라이브러리의 버전이나 어떤 라이브러리를 사용하는지 파악할 때 쓰인다.
'IT > linux' 카테고리의 다른 글
mplayer / slave mode, idle, standalone, pipe, command, cache (0) | 2022.09.09 |
---|---|
Bogomips 개요, 측정 방법 (0) | 2022.09.09 |
gcc warning case 정리 (0) | 2022.09.05 |
ClearCase 개요와 활용 (0) | 2022.09.05 |
ctags 지원 언어 목록 / list-language, list-map, languages (0) | 2022.09.05 |
댓글