在 Linux 下进行反汇编(disassembly),通常是为了分析二进制程序(如 ELF 可执行文件、共享库、Shellcode 等)。下面按从入门到进阶给你一个完整操作指南。
| 工具 | 用途 |
|---|---|
objdump |
最基本、最常用的反汇编工具 |
gdb |
动态调试 + 反汇编 |
radare2 / r2 |
强大的逆向分析工具 |
IDA Pro |
商业逆向神器(Linux 版) |
Ghidra |
NSA 开源逆向工具 |
ndisasm |
简单 x86 反汇编 |
capstone |
反汇编库(脚本化分析) |
objdump 反汇编(最常用)objdump -d ./a.out
.text)objdump -d -j .text ./a.out
-g 编译)objdump -S ./a.out
objdump -t ./a.out
gdb 动态反汇编gdb ./a.out
disassemble
disassemble main
disassemble 0x401000,0x401100
x/10i $pc
radare2(专业逆向)sudo apt install radare2
r2 ./a.out
aaa
afl
pdf @ main
ndisasm(适合裸二进制)ndisasm -b 32 shellcode.bin
或 64 位:
ndisasm -b 64 shellcode.bin
// test.c
int main() {
return 42;
}
gcc -g -o test test.c
objdump -d test
你可能会看到类似:
0000000000001129 <main>:
1129: 55 push %rbp
112a: 48 89 e5 mov %rsp,%rbp
112d: b8 2a 00 00 00 mov $0x2a,%eax
1132: 5d pop %rbp
1133: c3 ret
| 架构 | objdump 参数 |
|---|---|
| x86 | 默认 |
| x86-64 | 默认 |
| ARM | objdump -d -M arm ./a.out |
| MIPS | objdump -d -M mips ./a.out |
✅ 学习:
✅ 推荐书籍:
如果你愿意,我可以:
你现在用的是 Ubuntu / Kali / Arch?分析什么程序?