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


18

PE実行可能ファイルの場合、次を使用してインポートされたシンボルをリストできます。

dumpbin /imports FILE.EXE

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

「nm ELF-binary」は「シンボルなし」を返します。


回答:


15

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


私は-Tが...共有ライブラリで主に働いobjdumpの考え
ジム・マクナマラ

まあ...そうではないが、もしそうなら:objdump -t / bin / lsが返す: "SYMBOL TABLE:no symbols"、-T(DYNAMIC SYMBOL TABLEをリストする)は、 "00000000 DF UND 00000000 GLIBC_2.0 strchr」

5

私は好むreadelf

readelf -s <file>


必要なライブラリのみがリストされています。問題は、そのライブラリからインポートされるシンボルについてです。
アルカロ

4

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]

ご覧のとおり、必要なライブラリには「必要」のマークが付いています。


呼び出すモードによって異なります。試してみてくださいobjdump -p /path/to/binary | grep NEEDED
-sherrellbc

これは、シンボルではなくライブラリのみをリストしているようです。
プラグウォッシュ

0

ここに投稿された他の回答とともに、別の提案をしたいと思います。印刷される内容はファイル形式の機能であり、ELFはこの問題の解決に役立ちます。

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.