温馨提示×

CentOS下如何查看汇编

小樊
44
2026-08-04 08:15:53
栏目: 智能运维

CentOS(x86_64) 下查看“汇编”,常见有几种不同场景,下面按最常用 → 进阶给你系统说明。


一、查看可执行文件 / 二进制程序的汇编(最常用)

1️⃣ 使用 objdump(最基础、最常用)

objdump -d ./a.out

常用选项:

objdump -M intel -d ./a.out     # Intel 语法(默认是 AT&T)
objdump -d -S ./a.out           # 汇编 + 源码(需 -g 编译)

示例:

gcc -g test.c -o test
objdump -M intel -S test

2️⃣ 使用 gdb(动态调试 + 看汇编)

gdb ./a.out

常用 GDB 汇编命令:

disassemble main
disassemble 0x4005f0
info registers
stepi
nexti

切换 Intel 语法:

set disassembly-flavor intel

查看当前执行位置汇编:

disassemble

二、查看系统调用 / 内核相关汇编

3️⃣ 查看系统调用号(x86_64)

cat /usr/include/asm/unistd_64.h

或:

ausyscall --dump

三、查看运行时的汇编(动态分析)

4️⃣ 使用 strace(看系统调用,不是汇编)

strace ./a.out

5️⃣ 使用 perf(性能分析 + 汇编)

perf record ./a.out
perf annotate

可以看到热点代码的汇编 + 源码映射。


四、查看内核或模块汇编

6️⃣ 查看内核函数汇编

objdump -d /boot/vmlinux-$(uname -r)

或模块:

objdump -d /lib/modules/$(uname -r)/kernel/fs/ext4/ext4.ko

五、在线反汇编(辅助工具)

7️⃣ 使用 radare2(进阶)

yum install radare2
r2 ./a.out

常用:

aaa
pdf @ main

六、查看 C 程序生成的汇编(编译阶段)

8️⃣ 直接生成汇编文件

gcc -S test.c

生成:

test.s

查看:

cat test.s

使用 Intel 语法:

gcc -S -masm=intel test.c

七、常见场景速查表

需求 推荐命令
查看程序汇编 objdump -d
调试时看汇编 gdb + disassemble
C → 汇编 gcc -S
Intel 语法 -M intel
汇编 + 源码 objdump -S
内核汇编 objdump -d vmlinux

八、CentOS 安装必要工具

yum install -y binutils gdb gcc perf

如果你能说明 具体场景(例如:
✅ 看 C 程序汇编
✅ 逆向 ELF
✅ 内核调试
✅ 漏洞分析
✅ 看 syscall 实现)

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

0