objdump反彙編用法示例

2021-10-03 10:47:13 字數 2491 閱讀 2630

objdump反彙編用法示例

原文:-d:將**段反彙編

-s:將**段反彙編的同時,將反彙編**和源**交替顯示,編譯時需要給出-g,即需要除錯資訊。

-c:將c++符號名逆向解析。

-l:反彙編**中插入源**的檔名和行號。

-j section:僅反彙編指定的section。可以有多個-j引數來選擇多個section。

有**如下:

class main

int geta(void)

};

$objdump -d a.out # 簡單反彙編

08048456 <_zn4mainc1ev>:

8048456: 55 push %ebp

8048457: 89 e5 mov %esp,%ebp

8048459: 8b 45 08 mov 0x8(%ebp),%eax

804845c: c7 00 00 00 00 00 movl $0x0,(%eax)

8048462: 5d pop %ebp

8048463: c3 ret

08048464 <_zn4main4getaev>:

8048464: 55 push %ebp

8048465: 89 e5 mov %esp,%ebp

8048467: 8b 45 08 mov 0x8(%ebp),%eax

804846a: 8b 00 mov (%eax),%eax

804846c: 5d pop %ebp

804846d: c3 ret

$objdump -s a.out # 反彙編**中混入對應的源**

08048456 <_zn4mainc1ev>:

class main

8048462: 5d pop %ebp

8048463: c3 ret

08048464 <_zn4main4getaev>:

int geta(void)

8048464: 55 push %ebp

8048465: 89 e5 mov %esp,%ebp

804846c: 5d pop %ebp

804846d: c3 ret

$objdump -c -s a.out # c++符號名逆向解析

08048456 :

class main

8048462: 5d pop %ebp

8048463: c3 ret

08048464 :

int geta(void)

8048464: 55 push %ebp

8048465: 89 e5 mov %esp,%ebp

804846c: 5d pop %ebp

804846d: c3 ret

objdump -j .text -l -c -s a.out # 列印源檔名和行號

08048456 :

_zn4mainc2ev():

~/objdump/main.h:5

class main

8048462: 5d pop %ebp

8048463: c3 ret

08048464 :

_zn4main4getaev():

~/objdump/main.h:10

int geta(void)

8048464: 55 push %ebp

8048465: 89 e5 mov %esp,%ebp

~/objdump/main.h:12

804846c: 5d pop %ebp

804846d: c3 ret

簡單例項分析objdump反彙編用法

objdump rds 可可執行檔案 objdump命令是用檢視目標檔案或者可執行的目標檔案的構成的gcc 工具。1.準備 hello.c include include include module license gpl module author baoli module descriptio...

objdump 反彙編乙個函式的指令碼

1 使用system.map檔案查詢函式的起始位址和結束位址 2 使用objdump d 反彙編,然後通過 start address和 stop address引數指定函式區間 3 使用nm n out.elf system.map 命令生成system.map檔案 bin sh routine ...

反彙編 迴圈

includeint main 00401010 55 push ebp 00401011 8bec mov ebp,esp 00401013 83ec 44 sub esp,44 00401016 53 push ebx 00401017 56 push esi 00401018 57 push ...