在 Linux 下查看或分析反汇编指令,常见做法取决于你是想反汇编可执行文件 / 动态库,还是查看运行时的汇编代码。下面按使用场景给你一个完整说明。
objdump 反汇编(最常用)objdump -d a.out
objdump -d a.out | grep -A 20 main
objdump -S a.out
⚠️ 前提:编译时加 -g
gcc -g -o a.out test.c
gdb 查看反汇编(调试时最常用)gdb ./a.out
disassemble main
disassemble
layout asm
layout src
set disassembly-flavor intel
disassemble main
objdump 指定语法格式objdump -M intel -d a.out
objdump -d a.out
objdump -d libxxx.so
或查看符号:
nm libxxx.so
readelf 查看汇编相关结构(辅助)查看段信息:
readelf -S a.out
查看符号表:
readelf -s a.out
perfperf record ./a.out
perf annotate
radare2(逆向分析神器)r2 ./a.out
pd 20 # 反汇编 20 条指令
int main() {
return 0;
}
gcc -g -o test test.c
objdump -M intel -d test | grep -A 10 main
❌ 直接反汇编没有符号的可执行文件 → 只能看到地址
✅ 加上 -g 或保留符号表
❌ 用 cat 查看二进制 → 不可读
✅ 用 objdump / gdb / radare2
| 需求 | 命令 |
|---|---|
| 静态反汇编 | objdump -d |
| 调试时反汇编 | gdb → disassemble |
| Intel 语法 | -M intel |
| 源码+汇编 | objdump -S |
| 逆向分析 | radare2 |
如果你愿意,可以告诉我:
我可以直接给你定制示例。