“反汇编指令”通常指把机器码(二进制)还原成汇编代码的操作,不同工具、不同平台用法不一样。下面我按最常见场景给你讲清楚,并附上实用示例。
⚠️ 注意:
反汇编 ≠ 反编译
mov eax, 1)| 工具 | 平台 | 适合 |
|---|---|---|
objdump |
Linux | ELF 可执行文件 |
gdb |
Linux | 调试 + 反汇编 |
IDA Pro |
Win/Linux | 专业逆向 |
Radare2 |
跨平台 | 逆向分析 |
x64dbg |
Windows | 动态调试 |
ndisasm |
跨平台 | 裸二进制 |
objdump 反汇编整个程序objdump -d test
常用参数:
objdump -M intel -d test
-d:反汇编可执行段-M intel:使用 Intel 语法(默认是 AT&T)示例输出:
0804841b <main>:
mov eax,0x1
ret
objdump -d test | grep -A 20 "<main>"
gdb 反汇编(调试时最常用)gdb ./test
进入后:
disassemble main
或:
disassemble 0x0804841b
Intel 语法:
set disassembly-flavor intel
disassemble main
ndisasm -b 32 file.bin
或 64 位:
ndisasm -b 64 file.bin
mov eax, 1
mov $1, %eax
建议学习时统一用 Intel 语法。
objdump -d 看汇编gdb disassemble 单步如果你愿意,可以告诉我:
我可以给你更具体的一步到位教程。