objdump 是 GNU Binutils 中的经典反汇编工具,常用于分析 ELF、PE、Mach-O 等格式的可执行文件或目标文件。下面按常见用法 → 常用选项 → 实战示例来说明。
objdump [选项] 文件
objdump -d test
-d:反汇编 可执行代码段示例输出:
080484b0 <main>:
80484b0: 55 push %ebp
80484b1: 89 e5 mov %esp,%ebp
objdump -D test
⚠️ 注意:
-D 会把 数据也当指令反汇编objdump -S test
前提:
gcc -g -o test test.c
输出示例:
int main() {
80484b0: 55 push %ebp
objdump -b elf32-i386 -d test
或 ARM:
objdump -b elf32-littlearm -d test
objdump -t test
或动态符号:
objdump -T test
objdump -h test
常见段:
.text:代码.data:已初始化数据.bss:未初始化数据objdump -r test
常用于分析链接过程。
gcc -m32 -o test test.c
objdump -d test
objdump -d test | grep -A 20 "<main>:"
objdump -b binary -m i386 -D shellcode.bin
objdump -S -d test
| 工具 | 特点 |
|---|---|
| objdump | 稳定、标准、适合快速查看 |
| gdb | 动态调试 |
| radare2 / r2 | 逆向分析神器 |
| IDA / Ghidra | 高级反编译 |
| capstone | 可编程反汇编 |
❌ 没有反汇编内容
✅ 可能是 stripped 文件
✅ 用 -D 或检查 .text 段是否存在
❌ 架构不对
✅ 用 -m 指定架构
如果你愿意,可以告诉我:
我可以给你更精确的命令。