在 CentOS 上“反汇编程序指令”通常有两种常见需求:
下面按场景给你一套常用做法。
objdump(最常用)CentOS 一般自带 binutils
objdump -d ./your_program
常用参数:
objdump -d -M intel ./your_program # Intel 语法(更直观)
objdump -d -S ./your_program # 汇编 + 源码(需带 -g 编译)
只看 main 函数:
objdump -d -M intel ./your_program | grep '<main>:' -A 50
gdb(查看反汇编)gdb ./your_program
进入 gdb 后:
disassemble main
Intel 语法:
set disassembly-flavor intel
disassemble main
readelf(辅助分析)查看程序结构:
readelf -h ./your_program # ELF 头
readelf -S ./your_program # 段表
gdb ./your_program
break main
run
disassemble
stepi # 单条指令执行
info registers
查看当前执行位置:
x/10i $pc
strace(看系统调用,不算反汇编但常用)strace ./your_program
objdump + ndisasm(适用于裸二进制)ndisasm -b 64 your_bin
Radare2 示例:
r2 ./your_program
aaa
pdf @ main
gcc -g -O0 -o test test.c
-g:带调试信息-O0:不优化,汇编更直观-g-M intelradare2 或 IDA如果你能说明:
我可以给你更针对性的命令。