温馨提示×

centos怎样反汇编代码

小樊
50
2026-09-12 01:57:15
栏目: 智能运维

在 CentOS 上反汇编(disassemble)代码,通常有几种常见方式,取决于你是想反汇编 可执行文件 / 目标文件,还是 运行中的进程 / 内存。下面按使用场景说明。


一、使用 objdump 反汇编文件(最常用)

1. 反汇编整个可执行文件或 .o 文件

objdump -d ./a.out

2. 反汇编并查看源码(需要编译时带 -g)

objdump -S ./a.out

3. 只反汇编某个函数

objdump -d ./a.out | grep -A 50 "<main>:"

4. 指定架构(如 32 位)

objdump -M intel -d ./a.out

-M intel 使用 Intel 语法(默认是 AT&T)


二、使用 gdb 反汇编(适合调试)

1. 启动 gdb

gdb ./a.out

2. 反汇编当前函数

disassemble

3. 反汇编指定函数

disassemble main

4. 使用 Intel 语法

set disassembly-flavor intel
disassemble main

5. 反汇编某段地址

disassemble 0x400500, 0x400600

三、反汇编运行中的进程

1. 使用 gdb 附加进程

gdb -p <pid>

然后:

disassemble

2. 从 /proc 获取内存反汇编(高级)

cat /proc/<pid>/maps

结合 gdb 或 objdump 使用。


四、使用 radare2(功能强大,适合逆向)

安装

yum install radare2

基本使用

r2 ./a.out

进入后:

aaa        # 分析
pdf        # 反汇编当前函数
pdf @ main # 反汇编 main

五、使用 LLVM 工具(如 CentOS 带 clang)

llvm-objdump -d ./a.out

六、常见编译建议(方便反汇编)

gcc -g -O0 -fno-pie -no-pie a.c
  • -g:保留调试信息
  • -O0:不优化,反汇编更直观
  • -no-pie:地址更固定,便于分析

七、AT&T vs Intel 语法对比

默认(AT&T):

mov %rsp, %rbp

Intel:

mov rbp, rsp

如果你能说明:

  • 是 ELF 文件 / 内核模块 / shellcode / 进程
  • 是否 有源码
  • 想用 命令行还是图形工具

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

0 踩