在 Linux 下,“反汇编指令”通常指 反汇编(disassemble)一个可执行文件或一段机器码,一般不是单一命令,而是 工具+指令。下面按常见场景给你一个清晰说明。
objdump(最常用,系统自带)几乎所有 Linux 发行版都自带。
objdump -d 可执行文件
示例:
objdump -d ./a.out
常见参数:
objdump -M intel -d ./a.out # Intel 语法(默认是 AT&T)
objdump -S ./a.out # 源码 + 汇编混合
✅ 适合:ELF 可执行文件、.o、共享库
gdb(调试时反汇编)用于运行时反汇编。
gdb ./a.out
进入后:
disassemble main
disassemble 0x4005f0
带机器码:
disassemble /r main
设置 Intel 语法:
set disassembly-flavor intel
✅ 适合:调试、函数级反汇编
ndisasm(专门用于 x86 裸二进制)常用于 shellcode、bootloader。
ndisasm -b 32 file.bin
ndisasm -b 64 file.bin
⚠️ 不适合完整 ELF 文件
radare2(逆向工程神器)功能极强,但学习曲线陡。
r2 ./a.out
进入后:
pd 20 # 反汇编 20 条指令
pdf @ main # 反汇编 main 函数
✅ 适合:逆向分析、CTF
capstone / pycdas(Capstone 引擎)不是系统自带,需要安装。
pycdas ./a.out
如果你问的是 反汇编指令本身在哪执行,答案是:
| 场景 | 位置 |
|---|---|
| ELF 程序 | .text 段 |
| 内存中 | 代码段(code section) |
| 调试器 | gdb / radare2 |
| 文件分析 | objdump |
查看代码段位置:
readelf -S ./a.out
| 工具 | 是否默认安装 | 适合 |
|---|---|---|
| objdump | ✅ | 静态分析 |
| gdb | ✅ | 调试 |
| ndisasm | ❌ | 裸二进制 |
| radare2 | ❌ | 逆向 |
| capstone | ❌ | 高级分析 |
objdump -M intel -d ./a.out
或调试时:
gdb ./a.out
(gdb) set disassembly-flavor intel
(gdb) disassemble main
如果你愿意,可以告诉我:
我可以给你更精确的命令和示例。