linux驅動系列之程序反匯編
摘抄網頁: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驅動系列之程序反匯編