1. 程式人生 > >ELF檔案檢視利器之readelf用法

ELF檔案檢視利器之readelf用法

Android在NDK開發工具中提供了readelf,用來幫助開發者檢視編譯後目標檔案的組成結構和具體內容。

常用的有以下幾個功能選項:

1)-h或者--file-header

顯示在ELF檔案頭裡包含的所有資訊,例如:


同樣是顯示ELF檔案頭的資訊,readelf比objdump要詳細的多。

2)-l或者--program-headers或者--segments

顯示程式頭表資訊,包擴有幾個段,每個段的屬性,以及每個段中包含有哪幾個節(Section)例如:


3)-S或者--section-headers或者--sections

顯示節區表內的所有資訊,包括每個節的屬性,注意這裡是用的是大寫的“S”,例如:


4)-t或者--section-details

用來顯示所有節的詳細資訊,感覺上但從資訊量上來說,和前面的“-S”沒有什麼大的不同,例如:


5)-e或者--headers

顯示所有頭的資訊,包括ELF檔案頭、程式頭和節頭,也就是“-h -l -S”的組合。

6)-s或者--syms或者--symbols

顯示符號表的資訊,包含靜態符號表(.symtab)和動態符號表(.dynsym),例如:

如果只關心動態符號表,可以直接使用“--dyn-syms”。

7)-r或者--relocs

顯示所有重定位入口的資訊,例如:


8)-d或者--dynamic

顯示動態節區的內容,例如:


9)-x或者--hex-dump=<number|name>

顯示某個節區的二進位制碼,具體哪個節可以用該節的編號或者名字來指定,例如“-x .text”:


總體看來,就察看ELF內容來說,readelf和objdump在很多方面還是非常相似的,可以互補。

但是如果想看ELF檔案中的彙編程式碼,還是objdump更強一點。