在 Linux 下查看反汇编(disassembly)通常取决于你想分析的是可执行文件、共享库、core dump,还是正在运行的进程。下面按常见场景给你一个系统性的说明。
| 工具 | 用途 |
|---|---|
objdump |
最常用的静态反汇编工具 |
gdb |
动态调试 + 反汇编 |
nm |
查看符号表 |
readelf |
查看 ELF 结构 |
radare2 / r2 |
高级逆向分析 |
IDA Pro / Ghidra |
图形化逆向(非 Linux 自带) |
objdump 查看反汇编(最常用)objdump -d ./a.out
objdump -d ./a.out | grep -A 20 "<main>:"
objdump -S ./a.out
⚠️ 需要编译时加
-g:
gcc -g -o a.out a.c
objdump -M intel -d ./a.out
gdb 进行反汇编(动态分析)gdb ./a.out
disassemble main
或简写:
disas main
set disassembly-flavor intel
disas main
disas 0x400500,0x400550
gdb -p <pid>
info registers
where
disas
objdump -d /lib/x86_64-linux-gnu/libc.so.6
或:
gdb /bin/ls
(gdb) disas printf
nm ./a.out
或:
readelf -s ./a.out
r2 ./a.out
常用命令:
aaa # 自动分析
pdf @ main # 反汇编 main 函数
gcc -g -m32 -o test test.c
objdump -M intel -d test | less
或:
gdb ./test
(gdb) set disassembly-flavor intel
(gdb) disas main
| 类型 | 说明 |
|---|---|
| 反汇编 | 汇编代码(asm) |
| 反编译 | 近似 C 代码(如 Ghidra) |
如果你愿意,可以告诉我:
我可以给你更针对性的命令和实战示例。