Linux 下做反汇编(disassembly)通常有几种常见场景,步骤大同小异。下面按从简单到进阶给你一个清晰流程,适合做逆向、漏洞分析、或学习 ELF 程序。
sudo apt update
sudo apt install gdb binutils objdump radare2 ndisasm
常用工具:
objdump(最基础)gdb(调试 + 反汇编)radare2(进阶逆向)ndisasm(适合裸二进制)file test
输出示例:
test: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked
确认:
objdump -d test
objdump -d test | grep -A 20 "<main>:"
objdump -S test
objdump -h test
gdb ./test
set disassembly-flavor intel
disas main
break main
run
ni # 单步(不进入函数)
si # 单步(进入函数)
✅ GDB 是最适合分析程序执行流程的
readelf -S test
readelf -s test
readelf -h test
r2 ./test
常用命令:
aaa # 自动分析
pd 20 # 反汇编 20 条
s main # 跳到 main
pdf # 反汇编当前函数
✅ radare2 适合复杂程序、脱壳、漏洞分析
ndisasm -b 32 file.bin
或
objdump -b binary -m i386 -D file.bin
file 判断文件类型readelf 分析 ELF 结构objdump -d 静态反汇编gdb 动态调试 + 反汇编radare2 深入分析<main+0> 而不是函数名?✅ 程序被 strip 了
✅ 用 strip 过的程序没有符号表
strace ./test
strings test
如果你愿意,我可以:
你可以直接把 程序或代码片段 发我。