在 Linux 下,“反汇编命令”通常指将可执行文件、目标文件或内存中的机器码转换成汇编代码的命令行工具。下面按常见程度和用途给你一个清晰梳理。
objdump(最常用)作用:反汇编 ELF 可执行文件、.o 目标文件等
属于:GNU Binutils
objdump -d test
常用选项:
objdump -d test # 反汇编所有可执行段
objdump -D test # 反汇编所有段(包括数据段)
objdump -S test # 汇编 + 源码混合(需 -g 编译)
objdump -M intel test # Intel 语法(默认是 AT&T)
示例(Intel 语法):
objdump -d -M intel test
gdb(调试时反汇编)作用:在调试过程中查看汇编代码
gdb ./test
进入后:
disassemble main
disassemble
disassemble 0x400520
设置为 Intel 语法:
set disassembly-flavor intel
单步汇编调试:
stepi
ni
ndisasm(专门反汇编 raw 二进制)作用:反汇编裸机代码、shellcode
ndisasm -b 32 shellcode.bin
ndisasm -b 64 shellcode.bin
常见于:
radare2(r2)强大的逆向分析框架(命令行)
r2 ./test
常用:
aa # 分析
pdf # 反汇编当前函数
s main
pdf
objdump vs gdb vs radare2 对比| 工具 | 场景 | 特点 |
|---|---|---|
| objdump | 静态分析 | 简单、稳定 |
| gdb | 动态调试 | 可边运行边看 |
| radare2 | 逆向工程 | 功能最全 |
| ndisasm | 原始二进制 | 无格式限制 |
// test.c
int main() {
return 0;
}
编译:
gcc -g test.c -o test
反汇编:
objdump -d -M intel test
mov %esp, %ebp
mov ebp, esp
Linux 下“反汇编命令”通常指
objdump、gdb、ndisasm、radare2,其中 objdump 最基础,gdb 最常用,radare2 最专业。
如果你愿意,我也可以: