在 Linux 下进行**反汇编(disassembly)**操作,常见场景有:
下面按常用工具 + 示例系统讲解。
objdump(最常用)objdump -d test
-d:反汇编可执行代码段test:ELF 可执行文件示例:
objdump -d ./a.out
objdump -S test
适合调试和分析 C 程序。
objdump -d -j .text test
常见段:
.text:代码段.init / .fini.plt:动态链接跳转表objdump -M intel -d test
objdump -t test
gdb(调试 + 反汇编)gdb ./test
disas main
或:
disas 0x401000
set disassembly-flavor intel
disas main
disas
ni # 下一条指令
si # 步入
ndisasm(适合裸二进制)适合分析 shellcode / boot / 无 ELF 文件
sudo apt install nasm
ndisasm -b 32 shellcode.bin
或 64 位:
ndisasm -b 64 shellcode.bin
radare2(逆向神器)sudo apt install radare2
r2 ./test
aaa
pd 20 # 反汇编 20 条
pdf # 反汇编当前函数
objdumpecho -n -e "\x90\x90\x90" > code.bin
objdump -b binary -m i386 -M intel -D code.bin
| 项目 | AT&T(默认) | Intel |
|---|---|---|
| 操作数顺序 | mov %eax,%ebx |
mov ebx,eax |
| 寄存器 | %eax |
eax |
| 立即数 | $5 |
5 |
int main() {
return 0;
}
编译:
gcc -g -o test test.c
反汇编:
objdump -M intel -S test
✅ 新手
objdump + gdb✅ 逆向 / CTF
radare2 / r2Ghidra / IDA✅ Shellcode
ndisasm如果你愿意,可以告诉我:
我可以给你更精确的命令和实战案例。