温馨提示×

如何反汇编CentOS程序

小樊
37
2026-08-04 08:12:55
栏目: 智能运维

在 CentOS 上反汇编程序,通常取决于程序类型(ELF 可执行文件、共享库、内核模块等)你想分析到什么程度(汇编指令、伪代码、符号信息等)。下面给你一套从入门到进阶的完整方案。


一、准备环境(CentOS)

1️⃣ 安装常用工具

sudo yum install -y binutils gdb objdump readelf nasm

如果你要更强大的反汇编/逆向分析:

sudo yum install -y radare2

或者安装 IDA / Ghidra(手动)(见后文)


二、查看程序基本信息(非常重要)

1️⃣ 查看是否为 ELF 文件

file your_program

示例输出:

ELF 64-bit LSB executable, x86-64

2️⃣ 查看程序架构和段信息

readelf -h your_program
readelf -S your_program

三、基础反汇编(最常用)

✅ 方法 1:objdump(最常用)

反汇编整个程序

objdump -d your_program

反汇编指定函数

objdump -d your_program | grep -A 20 "<main>:"

混合源码 + 汇编(如果有调试信息)

objdump -S your_program

⚠️ 前提:编译时带 -g

gcc -g -o test test.c

✅ 方法 2:gdb(动态反汇编)

适合调试 + 看运行态汇编

gdb ./your_program

常用命令:

disassemble main
disassemble
info registers
stepi

查看某地址:

x/10i 0x4005f0

四、进阶反汇编工具

✅ 方法 3:radare2(强大、免费)

r2 ./your_program

常用命令:

aaa        # 自动分析
pd 20      # 反汇编 20 行
pdf        # 反汇编当前函数
s main     # 跳到 main
pdf

查看汇编:

pd 50

导出汇编:

pdf > main.asm

✅ 方法 4:Ghidra(NSA 开源,最强)

  1. 下载:https://ghidra-sre.org/
  2. 解压并运行:
./ghidraRun

功能:

  • 反汇编
  • 反编译为 类 C 伪代码
  • 符号恢复
  • 函数调用图

✅ 非常适合逆向工程


五、反汇编共享库(.so)

objdump -d libxxx.so

或:

nm libxxx.so

查看导出符号:

readelf -s libxxx.so

六、反汇编内核模块(.ko)

objdump -d your_module.ko

查看模块信息:

modinfo your_module.ko

七、常见场景示例

示例 1:反汇编 main 函数

objdump -d test | grep -A 30 "<main>:"

示例 2:查看系统调用

strace ./test

示例 3:查看字符串

strings your_program

八、常见问题

❓ 反汇编出来全是 nop / 乱码?

  • 可能是 stripped(去符号)
  • 被加壳 / 混淆
  • 使用 radare2Ghidra

❓ 没有源码怎么办?

✅ 完全可以用:

  • objdump
  • gdb
  • radare2
  • Ghidra

九、总结(推荐组合)

目的 推荐工具
快速看汇编 objdump -d
调试 + 汇编 gdb
逆向分析 radare2
高级逆向 Ghidra

如果你愿意,可以告诉我:

  • ✅ 是 用户态程序 / 内核模块 / so
  • ✅ 想 静态分析还是动态调试
  • ✅ 是否 去符号 / 加壳

我可以给你针对你这个程序的具体反汇编方案

0