在 Linux 下进行反汇编(把二进制/可执行文件转成汇编代码),常用工具和指令如下,按场景给你推荐:
objdump✅ 几乎必会
objdump -d ./a.out
常用参数:
objdump -d -M intel ./a.out # Intel 语法(更像 Windows)
objdump -d -M att ./a.out # AT&T 语法(Linux 默认)
objdump -d -S ./a.out # 反汇编 + 源代码(需 -g 编译)
objdump -d -M intel -j .text ./a.out # 只反汇编 .text 段
适合:
gdb✅ 调试时实时看汇编
gdb ./a.out
进入后:
disassemble main
disassemble
disassemble /m main # 汇编 + 源码
设置 Intel 语法:
set disassembly-flavor intel
适合:
radare2 / ghidra✅ 逆向工程首选
r2 ./a.out
[0x000000]> aaa
[0x000000]> pdf @ main
ndisasm✅ 无 ELF 结构时
ndisasm -b 32 shellcode.bin
ndisasm -b 64 shellcode.bin
readelf虽然不是反汇编,但常配合用:
readelf -h ./a.out # 文件头
readelf -S ./a.out # 段表
readelf -s ./a.out # 符号表
| 场景 | 推荐 |
|---|---|
| 静态看汇编 | objdump -d -M intel |
| 调试看汇编 | gdb + disassemble |
| 逆向分析 | radare2 / ghidra |
| shellcode | ndisasm |
| 内核 / 模块 | objdump |
如果你愿意,可以告诉我:
我可以给你更精确的一套命令。