温馨提示×

怎么反汇编centos程序指令

小樊
40
2026-09-09 05:03:42
栏目: 智能运维

在 CentOS 上“反汇编程序指令”通常有两种常见需求:

  1. 反汇编整个可执行文件 / 目标文件(静态分析)
  2. 在运行时查看某段汇编指令(动态调试)

下面按场景给你一套常用做法。


一、静态反汇编(不运行程序)

1. 使用 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

2. 使用 gdb(查看反汇编)

gdb ./your_program

进入 gdb 后:

disassemble main

Intel 语法:

set disassembly-flavor intel
disassemble main

3. 使用 readelf(辅助分析)

查看程序结构:

readelf -h ./your_program     # ELF 头
readelf -S ./your_program     # 段表

二、动态反汇编(运行时)

1. gdb 单步看汇编

gdb ./your_program
break main
run
disassemble
stepi        # 单条指令执行
info registers

查看当前执行位置:

x/10i $pc

2. 使用 strace(看系统调用,不算反汇编但常用)

strace ./your_program

三、高级反汇编工具(推荐)

1. objdump + ndisasm(适用于裸二进制)

ndisasm -b 64 your_bin

2. 反编译工具

  • Ghidra(NSA 开源)
  • IDA Pro
  • Radare2 / Cutter

Radare2 示例:

r2 ./your_program
aaa
pdf @ main

四、编译时建议(方便反汇编)

gcc -g -O0 -o test test.c
  • -g:带调试信息
  • -O0:不优化,汇编更直观

五、常见问题

  • 看不到源码? → 没加 -g
  • 汇编看不懂? → 加 -M intel
  • ** stripped 程序?** → 函数名没了,用 radare2IDA

如果你能说明:

  • ELF / 脚本 / 内核模块
  • 看函数 / 看系统调用 / 逆向算法

我可以给你更针对性的命令。

0