温馨提示×

centos怎么进行反汇编

小樊
43
2026-09-30 07:31:23
栏目: 智能运维

在 CentOS 上进行反汇编,通常取决于你想反汇编的是 二进制可执行文件、内核模块、还是 运行中的进程。下面按常见场景给你一个实用指南。


一、常用反汇编工具安装

1️⃣ objdump(最常用,binutils 自带)

一般系统已安装:

which objdump

如果没有:

sudo yum install binutils

2️⃣ gdb(调试 + 反汇编)

sudo yum install gdb

3️⃣ radare2(高级逆向)

sudo yum install radare2

或从源码安装最新版。

4️⃣ objconv(可选)

适合精细控制反汇编输出。


二、反汇编整个二进制文件(静态)

使用 objdump

objdump -d ./test

常用参数:

objdump -d -M intel ./test
  • -d:反汇编代码段
  • -M intel:使用 Intel 语法(默认是 AT&T)

查看符号和地址:

objdump -d -M intel ./test | less

只反汇编某个函数:

objdump -d -M intel ./test | grep -A 20 '<main>:'

三、反汇编 + 源码对照

如果编译时带调试信息:

gcc -g test.c -o test
objdump -S -M intel ./test
  • -S:源码 + 汇编混合显示

四、使用 GDB 动态反汇编

1️⃣ 启动程序

gdb ./test

2️⃣ 反汇编当前函数

disassemble

指定函数:

disassemble main

使用 Intel 语法:

set disassembly-flavor intel
disassemble main

3️⃣ 反汇编某地址

disassemble 0x4005b6

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

objdump -d -M intel mymodule.ko

查看符号:

nm mymodule.ko

六、反汇编运行中的进程(高级)

gdb -p <pid>

然后:

info proc mappings
disassemble 0x...

⚠️ 需要权限,可能需要:

sysctl kernel.yama.ptrace_scope=0

七、CentOS 常见坑

  1. 默认是 AT&T 语法
    • 新手建议加 -M intel
  2. ** stripped 二进制**
    • 没有符号,可用 radare2 或 nm -D
  3. SELinux
    • 某些调试操作可能被限制

八、简单示例

gcc test.c -o test
objdump -d -M intel test

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

  • 是想 学习汇编
  • 还是 逆向分析程序
  • 还是 分析崩溃 / 漏洞

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

0 踩