在 Linux 下做反汇编(disassembly),通常取决于你分析的是二进制文件、可执行程序还是正在运行的程序。下面按常见场景给你一个实用速查表。
| 工具 | 说明 |
|---|---|
objdump |
GNU binutils 自带,最常用 |
ndisasm |
NASM 自带,适合裸二进制 |
gdb |
动态调试 + 反汇编 |
radare2 / rizin |
逆向工程专用 |
IDA Pro / Ghidra |
图形化逆向(GUI) |
objdump 反汇编(最常用)objdump -d a.out
常见选项:
objdump -M intel -d a.out
-M intel:使用 Intel 语法(默认是 AT&T)-d:反汇编可执行段objdump -M intel -d a.out | grep -A 20 "<main>:"
objdump -M intel -S a.out
objdump -M intel -j .text -d a.out
gdb 动态反汇编gdb ./a.out
disassemble
或指定函数:
disassemble main
set disassembly-flavor intel
disassemble main
disassemble 0x4005f6
ndisasmndisasm -b 64 shellcode.bin
-b 32 / -b 64:指定位数radare2(逆向利器)r2 ./a.out
进入后:
aa # 分析
pdf @ main # 反汇编 main 函数
gcc -m32 -no-pie -fno-stack-protector -o test test.c
objdump -M intel -d test | less
file a.out
AT&T:
mov -0x4(%rbp),%eax
Intel:
mov eax, [rbp-0x4]
objdump -dgdb disassembleradare2 / Ghidra如果你愿意,可以告诉我:
我可以给你更针对性的命令和示例。