2012-05-07 59 views
5

ELF格式在哪裏存儲導入函數的名稱?是否總是可以枚舉所有導入名稱,例如PE可執行文件?以ELF二進制導入名稱

例如,如果二進制文件正在使用printf是否可以通過二進制本身的靜態分析來告訴它呢?

回答

7

在ELF中,它們被稱爲未定義的符號。您可以通過查看未定義符號列表:

  • nm -D <file>|grep -w U

  • objdump -T <file>|grep "\*UND\*"

ELF文件沒有指定哪些符號來自哪個庫;它只是添加一個鏈接到ELF二進制文件的共享庫列表,並讓連接器找到庫中的符號。

+0

我們不能從哪個共享庫中獲得這些功能嗎? –

+0

請注意,定義的符號也可以導入。您需要查看重定位表以查看使用哪些符號。 – ysdx

+0

@AnwarMohamed:不,因爲它們不與ELF中的特定共享庫綁定。 – ysdx

相關問題