web-dev-qa-db-ja.com

ELF実行可能ファイルにインポートされたシンボルをリストする方法は?

PE実行可能ファイルの場合、インポートしたシンボルを次のようにリストできます

dumpbin /imports FILE.EXE

またはGUIアプリケーションである依存ユーティリティを使用します。

`nm ELF-binary 'は単に「記号なし」を返します。

22
Xiè Jìléi

Objdump -T 'ELF-file'を試してください

20
Mr Shunz

私はreadelfを好みます。

readelf -s <file>

5
Grazfather

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」というマークが付いています。

5
CyberTech

ここに掲載されている他の回答とともに、別の回答を提案したいと思います。印刷される内容はファイル形式の関数であり、ELFはこの問題をうまく解決します。

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

Grepは単にDynamic Sectionの内容を抽出しますが、これはobjdump -p出力の形式であり、これが単純なソリューションになります。

1
sherrellbc