Linux下objdump使用方法
linux下objdump命令常見用法舉例:
objdump -x obj:以某種分類資訊的形式把目標檔案的資料組成輸出;<可查到該檔案的的所有動態庫>
objdump -t obj:輸出目標檔案的符號表()
objdump -h obj:輸出目標檔案的所有段概括()
objdump -j ./text/.data -S obj:輸出指定段的資訊(反彙編原始碼)
objdump -S obj:輸出目標檔案的符號表() 當gcc -g時列印更明顯
objdump -j .text -Sl stack1 | more
-S 儘可能反彙編出原始碼,尤其當編譯的時候指定了-g這種除錯引數時,
效果比較明顯。隱含了-d引數。
-l 用檔名和行號標註相應的目的碼,僅僅和-d、-D或者-r一起使用
使用-ld和使用-d的區別不是很大,在原始碼級除錯的時候有用,要求
編譯時使用了-g之類的除錯編譯選項。
-j name 僅僅顯示指定section的資訊
如何使用linux下objdump命令對任意一個二進位制檔案進行反彙編?
可以使用如下命令:
objdump -D -b binary -m i386 a.bin
-D表示對全部檔案進行反彙編,-b表示二進位制,-m表示指令集架構,a.bin就是我們要反彙編的二進位制檔案
objdump -m可以檢視更多支援的指令集架構,如i386:x86-64,i8086等
另外上面的所有objdump命令的引數同樣適用於arm-linux-objdump。
同時我們也可以指定big-endian或little-endian(-EB或-EL),我們可以指定從某一個位置開始反彙編等。
objdump命令是Linux下的反彙編目標檔案或者可執行檔案的命令,它還有其他作用,下面以ELF格式可執行檔案test為例詳細介紹:
objdump -f test 顯示test的檔案頭資訊
objdump -d test 反彙編test中的需要執行指令的那些section
objdump -D test 與-d類似,但反彙編test中的所有section
objdump -h test 顯示test的Section Header資訊
objdump -x test 顯示test的全部Header資訊
objdump -s test 除了顯示test的全部Header資訊,還顯示他們對應的十六進位制檔案程式碼
輸出到txt檔案objdump -s test.so>test.txt
同時可以用命nm,strace,gdb.