Linux下替代终端+objdump、支持跳转追踪的汇编阅读工具推荐?
Linux下便捷阅读汇编、追踪跳转指令的实用方法
1. 用GDB交互式追踪汇编跳转
GDB不仅能调试源码,也能完美适配汇编级别的跳转追踪:
- 启动GDB加载二进制:
gdb ./your_binary - 打开纯汇编视图:输入
layout asm,此时会显示当前执行的汇编指令,跳转指令(jmp、je、jne等)会高亮 - 单步执行汇编:
stepi(缩写si)会跟进每一条指令,包括跳入函数;nexti(缩写ni)会跳过函数调用,只在当前函数内执行 - 精准跳转追踪:用
break *0x123456(替换为跳转指令的内存地址)设置断点,输入continue直接跑到该跳转处,再用si跟进跳转目标 - 反汇编指定函数:
disassemble main(替换为函数名)查看完整函数汇编,加/r参数还能显示机器码:disassemble /r main
2. 用objdump静态分析汇编结构
如果不需要动态调试,objdump是静态反汇编的首选,能让汇编输出更清晰:
- 生成带Intel语法的纯汇编:
objdump -d -M intel ./your_binary,Intel语法比默认的AT&T更易读 - 仅反汇编代码段:加
-j .text参数避免无关段干扰:objdump -d -M intel -j .text ./your_binary - 快速定位跳转指令:结合grep筛选所有跳转指令:
objdump -d ./your_binary | grep -E 'jmp|je|jne|jz|jg' - 查看指令地址与偏移:默认输出会显示每条指令的内存地址和相对偏移,方便定位跳转目标
3. 用radare2可视化追踪汇编流
radare2是专业逆向工具,交互式体验比GDB更适合快速浏览汇编跳转:
- 启动radare2加载二进制:
r2 ./your_binary - 先分析二进制:输入
aa完成自动分析,识别函数和跳转关系 - 反汇编指定函数:
pdf @ main(main替换为目标函数名)查看带注释的汇编,跳转目标会直接标注 - 进入可视化模式:输入
V切换到视图,用方向键上下浏览指令,按n跳转到下一条,N回到上一条;遇到跳转指令时,按f直接跳转到目标地址,按F返回原位置 - 动态调试追踪:输入
ood启动调试,d单步执行汇编,D跳过函数调用,全程纯汇编视图
4. 优化perf report的使用体验
既然你已经在使用perf report,可通过参数优化来屏蔽源码、聚焦汇编跳转:
- 关闭源码显示:
perf report --no-source,只展示汇编指令和调用栈 - 显示机器码与汇编对应:
perf annotate --asm-raw ./your_binary,能看到每条汇编对应的机器码,更便于分析跳转类型 - 过滤跳转相关事件:记录数据时加
-e branches,专门追踪分支跳转事件:perf record -e branches ./your_binary,后续perf report会聚焦分支跳转的统计和指令
内容的提问来源于stack exchange,提问作者user20746246
相关产品推荐
相关产品推荐

