反汇编(Disassembly)Linux 下的程序或内核,通常需要一系列工具,具体取决于你的目标:是用户态程序、内核、还是整个系统镜像。下面按场景给你梳理。
GNU Binutils 自带,适合 ELF 文件。
objdump -d ./a.out
objdump -d -M intel ./a.out # Intel 语法
✅ 适合:
查看 ELF 结构(段、符号、重定位)。
readelf -h ./a.out
readelf -S ./a.out
nm:查看符号addr2line:地址转源码行号nm vmlinux | grep sys_open
addr2line -e vmlinux 0xffffffff8123abcd
gdb ./a.out
(gdb) disassemble main
(gdb) layout asm
配合:
pedapwndbggefLinux 版本可用(Wine 或原生)
ghidraRun
r2 ./a.out
aa
pdf @ main
适合:
objdump -d vmlinux > vmlinux.asm
需要:
vmlinux(未压缩)System.map(符号表)分析运行中的内核:
crash vmlinux /proc/kcore
perf record -g ./app
perf report
| 架构 | 工具 |
|---|---|
| x86 / x64 | objdump, IDA, Ghidra |
| ARM | arm-linux-gnueabi-objdump |
| RISC-V | riscv64-linux-gnu-objdump |
| MIPS | mips-linux-gnu-objdump |
objdump + GDB + pwndbg
Ghidra / IDA + radare2
vmlinux + objdump + crash + ftrace
如果你能告诉我:
我可以直接给你一条最合适的学习或操作路线。