ELF 실행 파일에서 가져온 심볼을 나열하는 방법은 무엇입니까?


19

PE 실행 파일의 경우 다음을 사용하여 가져온 심볼을 나열 할 수 있습니다.

dumpbin /imports FILE.EXE

또는 GUI 응용 프로그램 인 dependent 유틸리티를 사용합니다.

`nm ELF-binary '는 단지 "심볼 없음"을 반환합니다.


답변:


16

objdump -T 'ELF-file'시도


objdump -T가 주로 공유 라이브러리에서 작동한다고 생각했습니다.
jim mcnamara

음 ... 실제로 그렇지 않은 경우 : objdump -t / bin / ls 다음을 반환합니다. "SYMBOL TABLE : no symbols", -T (DYNAMIC SYMBOL TABLE을 나열 함)와 함께 다음과 같이 많은 데이터를 출력합니다. "00000000 DF UND 00000000 GLIBC_2.0 strchr "
Mr Shunz

5

objdump의 출력은이 목적을 위해 약간 과도하며 실제 가져 오기를 찾으려면 약간의 구문 분석이 필요합니다.

이 목적을 위해 readelf 를 선호합니다 .

readelf -d dynamic-buffer-test

Dynamic section at offset 0x630a8 contains 23 entries:
 Tag                Type                 Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libstdc++.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgcc_s.so.1]

보다시피 필요한 라이브러리는 "NEEDED"로 표시되어 있습니다.


그것은 당신이 그것을 호출하는 모드에 달려 있습니다. 시도하십시오 objdump -p /path/to/binary | grep NEEDED.
sherrellbc

이것은 기호가 아닌 라이브러리 만 나열하는 것 같습니다.
plugwash

5

나는 선호한다 readelf.

readelf -s <file>


필요한 라이브러리 만 나열합니다. 문제는 해당 라이브러리에서 어떤 심볼을 가져올 지에 관한 것입니다.
Alcaro

1

여기에 게시 된 다른 답변과 함께 다른 답변을 제안하고 싶습니다. 인쇄 된 내용은 파일 형식의 기능으로 ELF는이 문제를 해결하는 데 적합합니다.

objdump -p /path/to/binary | grep NEEDED

grep은 단순히의 내용을 추출 Dynamic Section하지만 objdump -p출력 형식 은 이것을 간단한 해결책으로 만듭니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.