1. 程式人生 > >linux驅動系列之程序反匯編

linux驅動系列之程序反匯編

.html 動態庫 log end 作用 文件 二進制文件 調試 可執行文件

摘抄網頁:http://www.169it.com/article/330129798173630299.html

參考網頁:http://www.cppblog.com/liu1061/articles/53762.html

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信息,還顯示他們對應的十六進制文件代碼

linux驅動系列之程序反匯編