温馨提示×

centos如何反汇编函数

小樊
56
2026-09-24 10:08:18
栏目: 智能运维

在 CentOS 上“反汇编函数”通常有以下几种常见场景,按是否已有可执行文件 / 是否带符号 / 是否源码级来分:


一、使用 objdump 反汇编(最常用)

1. 反汇编整个二进制中的某个函数

objdump -d ./your_program | grep -A 50 '<function_name>:'

或更直接:

objdump -d ./your_program | awk '/<function_name>:/{flag=1} flag{print} /ret/{if(flag) exit}'

2. 反汇编带符号的 ELF

objdump -d -M intel ./your_program
  • -M intel:使用 Intel 语法(默认是 AT&T)
  • 需要程序未 strip

3. 反汇编指定地址范围

objdump -d --start-address=0x400520 --stop-address=0x4005a0 ./your_program

二、使用 gdb 反汇编运行中的函数(推荐)

1. 进入 gdb

gdb ./your_program

2. 反汇编函数

disassemble function_name

或指定框架:

disassemble /m function_name
  • /m:混合源码(如果有 -g)

3. Intel 语法

set disassembly-flavor intel
disassemble function_name

4. 反汇编当前函数

disassemble

三、使用 nm + objdump 定位函数地址

nm ./your_program | grep function_name

得到地址后:

objdump -d --start-address=0x地址 ./your_program

四、没有符号怎么办(strip 过的程序)

1. 反汇编整个 .text

objdump -d ./your_program

2. 在 gdb 中反汇编地址

disassemble 0x400520, 0x4005a0

五、源码级反汇编(需要编译时加 -g)

gcc -g -O2 test.c -o test
gdb ./test
(gdb) disassemble /m main

六、其他工具(可选)

  • readelf -S:查看段
  • radare2 / objdump / IDA(高级)
  • perf + objdump:性能分析反汇编

七、常见注意点

✅ CentOS 默认已自带:

  • binutils(objdump)
  • gdb

安装(如缺失):

yum install binutils gdb

如果你愿意,可以告诉我:

  • 是 C / C++ / 汇编?
  • 是否 有符号 / 源码?
  • 想反汇编 用户态程序还是内核函数?

我可以给你更精确的命令示例。

0 踩