objdump命令的使用
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信息,還顯示他們對應的十六進制文件代碼
舉例:
將C源代碼和反匯編出來的指令對照:
1.
編譯成目標文件(要加-g選項)
gcc -g -o test.c
2.
輸出C源代碼和反匯編出來的指令對照的格式
objdump -S test.o
如下:
如何對任意一個二進制文件進行反彙編?
我們可以這樣做:
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命令是非常強大的!