温馨提示×

centos反汇编指令咋操作

小樊
45
2026-09-18 07:49:32
栏目: 智能运维

CentOS 上做“反汇编”一般有几个常见场景:

  • 反汇编 可执行文件 / 二进制
  • 反汇编 内核模块
  • 反汇编 函数 / 某段代码
  • 结合 GDB 动态反汇编

下面按常用方式一步步说。


一、准备工具(CentOS)

1. 安装常用反汇编工具

sudo yum install -y binutils gdb objdump readelf

可选(更强大):

sudo yum install -y capstone radare2

二、使用 objdump 反汇编(最常用)

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

objdump -d ./test

2. 反汇编并显示源码(需要 -g 编译)

objdump -S ./test

3. 只反汇编某个函数

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

或:

objdump -d --start-address=0x400520 --stop-address=0x400560 ./test

三、查看符号和段信息

查看符号表

nm ./test

查看 ELF 信息

readelf -h ./test
readelf -S ./test

四、使用 GDB 动态反汇编(强烈推荐)

1. 用 GDB 启动程序

gdb ./test

2. 反汇编当前函数

disassemble

3. 反汇编指定函数

disassemble main

4. 反汇编指定地址

disassemble 0x400520, 0x400560

5. 显示汇编 + 源码

layout split

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

objdump -d my_module.ko

查看符号:

nm my_module.ko

六、AT&T 与 Intel 语法切换

objdump 使用 Intel 语法

objdump -M intel -d ./test

GDB 使用 Intel 语法

set disassembly-flavor intel
disassemble main

七、简单示例(C → 反汇编)

// test.c
int add(int a, int b) {
    return a + b;
}

编译:

gcc -g -O0 test.c -o test

反汇编:

objdump -M intel -S ./test | grep -A 10 '<add>:'

八、常见坑提醒

  • 没有 -g:只能看到汇编,看不到源码
  • 开了 -O2:汇编会和源码差异很大
  • strip 过的文件:函数名丢失,只能看地址

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

  • 你是 反汇编用户态程序 / 内核 / shellcode
  • 用的是 x86 / x64 / ARM
  • 是想 学习汇编 还是 逆向分析

我可以直接给你针对性命令和例子。

0