在 Linux 下进行反汇编(disassembly)通常是为了分析二进制程序(如 ELF 可执行文件、动态库、shellcode 等)。下面从常用工具、基本流程、示例和进阶用法几个方面系统说明。
GNU binutils 自带,适合静态反汇编。
objdump -d test
常用选项:
objdump -M intel -d test # Intel 语法(默认是 AT&T)
objdump -s -j .text test # 显示 .text 段内容
objdump -t test # 查看符号表
适合边调试边反汇编。
gdb ./test
常用命令:
disassemble main
disassemble 0x401000
set disassembly-flavor intel
info functions
功能强大,适合逆向工程。
r2 ./test
常用命令:
aaa # 自动分析
pdf @ main # 反汇编 main 函数
pd 20 # 反汇编 20 条指令
s main # 跳转到 main
适合复杂程序分析。
适合裸二进制:
ndisasm -b 32 shellcode.bin
file test
示例:
test: ELF 64-bit LSB executable, x86-64
readelf -h test
readelf -S test
objdump -M intel -d test > test.asm
objdump -t test | grep main
或直接:
objdump -d test | grep -A 20 "<main>:"
objdump -M intel -d test | grep -A 30 "<main>:"
输出示例:
push rbp
mov rbp, rsp
mov DWORD PTR [rbp-0x4],edi
mov DWORD PTR [rbp-0x8],esi
pop rbp
ret
gdb ./test
(gdb) set disassembly-flavor intel
(gdb) disassemble main
r2 ./test
aaa
s main
pdf
objdump -M intel -d test
objdump -d -j .text test
gcc -g -o test test.c
objdump -S test
objdump + gdbradare2 + CutterGhidra如果你愿意,可以告诉我:
我可以给你定制一套学习路线或实战示例。