温馨提示×

CentOS反汇编指令怎么看

小樊
41
2026-07-09 02:06:23
栏目: 智能运维

在 CentOS(或其他 Linux 发行版)里,“反汇编”通常指的是把可执行文件或目标文件里的机器码还原成汇编代码。常用工具是 objdumpgdbradare2IDA 等。下面按最常见场景给你一个实用说明。


一、最常用的反汇编方式(objdump)

1️⃣ 查看整个程序的汇编代码

objdump -d test
  • -d:反汇编可执行段
  • test:编译好的可执行文件

示例:

gcc test.c -o test
objdump -d test

2️⃣ 只反汇编 main 函数

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

或者更清楚一点:

objdump -d test | less

然后搜索:

/main>

3️⃣ 显示源码 + 汇编(如果有 -g)

objdump -S test

编译时必须有调试信息:

gcc -g test.c -o test

4️⃣ 查看指定段(如 .text)

objdump -d -j .text test

二、使用 GDB 反汇编(调试时最常用)

1️⃣ 启动 GDB

gdb ./test

2️⃣ 反汇编当前函数

disassemble

或指定函数:

disassemble main

3️⃣ 显示汇编 + 源码

disassemble /m main

4️⃣ 查看某地址附近汇编

x/10i $pc

三、查看指令编码(机器码)

objdump -d test | grep -B1 -A1 "mov"

或 GDB 中:

x/10xb 0x4004f0

四、常见反汇编输出怎么看(重点)

示例:

40052d:       55                      push   %rbp
40052e:       48 89 e5                mov    %rsp,%rbp
400531:       c7 45 fc 0a 00 00 00    movl   $0xa,-0x4(%rbp)

解释:

部分 含义
40052d 指令地址
55 机器码
push %rbp 汇编指令

五、常见架构说明

架构 指令特点
x86 eax, ebx, mov
x86_64 rax, rbp, rsp
ARM ldr, str, bl

查看架构:

file test

六、如果是逆向分析(进阶)

radare2

r2 ./test
pd 20

ndisasm(x86)

ndisasm -b 64 test

七、常见错误 & 解决

objdump: not found

sudo yum install binutils

❌ 看不到 C 源码

gcc -g test.c -o test

八、总结(快速命令)

gcc -g test.c -o test
objdump -d test
gdb ./test
(gdb) disassemble main

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

  • ✅ 是 x86 还是 ARM
  • ✅ 是 看漏洞 / 逆向 / 学汇编 / 调 bug
  • ✅ 是否 没有源码

我可以直接带你逐行分析一段反汇编代码。

0