在 Linux 下进行反汇编,常见做法取决于你的目标(查看可执行文件、调试、逆向分析、内核代码等)。下面按使用场景和工具系统介绍。
objdump(最基础、最通用)适合:ELF 可执行文件、目标文件、共享库
objdump -d a.out
objdump -S a.out
objdump -d a.out | grep -A 20 "<main>:"
objdump -M intel -d a.out
-M intel:使用 Intel 语法(默认是 AT&T)
gdb(边调试边反汇编)适合:动态调试、函数定位
gdb ./a.out
常用命令:
disassemble main
disassemble 0x401000
使用 Intel 语法:
set disassembly-flavor intel
disassemble main
radare2(专业逆向)适合:逆向工程、CTF、恶意代码分析
r2 ./a.out
基本流程:
aaa # 自动分析
pdf @ main # 反汇编 main 函数
退出:
q
Ghidra / IDA(GUI)适合:复杂二进制分析
ghidraRun
支持:
| 架构 | 示例 |
|---|---|
| x86 | objdump -M intel -d a.out |
| x86_64 | objdump -M intel -d a.out |
| ARM | objdump -b elf32-littlearm -d a.out |
| MIPS | objdump -M mips -d a.out |
| 工具 | 作用 |
|---|---|
file |
查看文件类型 |
readelf |
查看 ELF 结构 |
nm |
查看符号表 |
strings |
查看字符串 |
objdump |
反汇编 |
示例:
file a.out
readelf -h a.out
strings a.out
gcc -g -o test test.c
objdump -M intel -S test | less
gdb ./test
(gdb) set disassembly-flavor intel
(gdb) disassemble main
objdump -d a.out | grep -E "<.*>:"
file a.out
✅ 初学 / 调试
objdump + gdb
✅ 逆向 / CTF
radare2 + Ghidra
如果你愿意,可以告诉我:
我可以给你更精确的命令和实战示例。