在 Linux 下“反汇编代码”通常指把可执行文件、目标文件或二进制程序转换成汇编代码,常见用途是逆向、调试、漏洞分析等。下面我按从简单到进阶给你一个完整实用指南。
objdump(最基础)objdump -d a.out
objdump -d a.out | grep -A 20 main
objdump -S a.out
objdump -M intel -d a.out
✅ 适合:快速查看汇编
❌ 不适合:复杂逆向、库函数太多
GDB(调试 + 反汇编)gdb ./a.out
disassemble
disassemble main
set disassembly-flavor intel
disassemble main
x/10i $rip
✅ 非常适合:调试、结合运行态分析
✅ 可单步、下断点、看寄存器
radare2(强烈推荐)sudo apt install radare2
r2 ./a.out
进入后:
aaa # 自动分析
s main # 定位 main
pdf # 反汇编函数
e asm.syntax = intel
pdf
✅ 优点:
Ghidra / IDA(图形化)# 下载后运行
ghidraRun
✅ 特点:
ndisasmndisasm -b 64 binary.bin
objdump -b binary -m i386:x86-64 -D binary.bin
✅ 适合:shellcode、固件、裸机程序
| 工具 | 用途 |
|---|---|
| gcc | 编译 |
| objdump | 静态反汇编 |
| gdb | 动态调试 |
| radare2 | 专业逆向 |
| Ghidra | 高级逆向 |
gcc -g -o test test.c
objdump -M intel -S test
或
gdb ./test
(gdb) set disassembly-flavor intel
(gdb) disassemble main
⚠️ 合法使用
❌ 不可用于:
如果你愿意,可以告诉我:
我可以给你针对性的命令和学习路线。