在 CentOS 上查看“反汇编代码”通常有几种常见场景,下面按使用目的给你一个完整指南。
objdump(最常用)适用于 ELF 可执行文件、.o 文件、库文件。
objdump -d ./your_program
常用参数:
objdump -d -M intel ./your_program # Intel 语法(推荐)
objdump -S ./your_program # 源码 + 汇编(需带 -g 编译)
示例:
gcc -g test.c -o test
objdump -S -M intel test
gdb(运行时反汇编)适合调试、动态分析。
gdb ./your_program
在 gdb 中:
disassemble main
disassemble /m main # 带源码
切换为 Intel 语法:
set disassembly-flavor intel
objdump -d -M intel /lib64/libc.so.6 | less
objdump -d -M intel your_module.ko
gdb -p <pid>
(gdb) disassemble
或只反汇编某函数:
(gdb) disassemble function_name
cat /proc/kallsyms | grep sys_open
crash 工具(需 debug kernel)crash /usr/lib/debug/lib/modules/$(uname -r)/vmlinux
crash> dis sys_open
gcc -S test.c # 生成 test.s
cat test.s
或:
gcc -S -masm=intel test.c
yum install binutils gdb
| 场景 | 工具 |
|---|---|
| 静态分析 ELF | objdump |
| 调试 / 运行时 | gdb |
| 编译阶段 | gcc -S |
| 内核 | crash + kallsyms |
| 线上进程 | gdb -p |
如果你能说明:
我可以给你更精确的命令示例。