objdump命令是Linux下的反汇编目标文件或者可执行文件的命令,它以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息,下面为大家讲解一下Linux下使用objdump进行反汇编方法。
1 objdump反汇编示例
源文件main.c
:
/* main.c */
void swap(int* first, int* second)
{
int temp = *first;
*first = *second;
*second = temp;
}
int main(void)
{
int a = 10;
int b = 20;
printf("a = %d; b = %d;\n", a, b);
swap(&a, &b);
printf("a = %d; b = %d;\n", a, b);
return 0;
}123456789101112131415161718192021
1.1 显示main.c
的汇编代码
gcc -S -o main.s main.c1
汇编文件main.s
.file "main.c"
.text
.globl swap
.type swap, @function
swap:
.LFB0:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
movq %rdi, -24(%rbp)
movq %rsi, -32(%rbp)
movq -24(%rbp), %rax
...12345678910111213141516
1.2 目标文件反汇编
gcc -c -o main.o main.c
objdump -s -d main.o > main.o.txt12
目标文件main.o
的反汇编结果输出到文件main.o.txt
反汇编同时显示源代码
gcc -g -c -o main.o main.c
objdump -S -d main.o > main.o.txt12
显示源代码同时显示行号
objdump -j .text -ld -C -S main.o > main.o.txt1
1.3 可执行文件反汇编
gcc -o main main.c
objdump -s -d main > main.txt12
反汇编同时显示源代码
gcc -g -o main main.c
objdump -S -d main > main.txt12
1.4 objdump反汇编常用参数
-
-
objdump -S
: 将代码段反汇编的同时,将反汇编代码与源代码交替显示,编译时需要使用-g
参数,即需要调试信息;
-
-
objdump -l
: 反汇编代码中插入文件名和行号
-
objdump -j section
: 仅反汇编指定的section
2 objdump帮助信息
输出objdump帮助信息: objdump --help
或者 man objdump
Usage: objdump
以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !