温馨提示×

如何对比centos反汇编指令

小樊
48
2026-09-03 03:12:28
栏目: 智能运维

在 CentOS(本质是 Linux 环境)里,“对比反汇编指令”通常有几种常见场景。下面按使用目的给你一个清晰指南。


一、常见反汇编工具(CentOS 上)

1. objdump(最常用)

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

2. gdb(调试时反汇编)

gdb ./test
(gdb) disassemble main

或 Intel 语法:

(gdb) set disassembly-flavor intel
(gdb) disassemble main

3. readelf(辅助分析)

readelf -S test

查看节区,配合 objdump 使用。


二、对比两种“反汇编指令”的常见方式

✅ 场景 1:对比 AT&T 与 Intel 语法

objdump -d test > att.asm
objdump -d -M intel test > intel.asm
diff att.asm intel.asm

示例差异:

AT&T:
mov    %rsp,%rbp

Intel:
mov    rbp,rsp

✅ 场景 2:对比不同版本程序的汇编差异

objdump -d old_version > old.asm
objdump -d new_version > new.asm
diff old.asm new.asm

或更好用:

vimdiff old.asm new.asm

✅ 场景 3:对比 C 代码与汇编

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

结合:

gdb ./test
(gdb) disassemble /m main

/m 可显示源码与汇编对应。


✅ 场景 4:优化级别对比(-O0 vs -O2)

gcc -O0 -o test_O0 test.c
gcc -O2 -o test_O2 test.c

objdump -d -M intel test_O0 > O0.asm
objdump -d -M intel test_O2 > O2.asm
vimdiff O0.asm O2.asm

三、实用技巧

1. 只反汇编某个函数

objdump -d -M intel test | sed -n '/<main>:/,/^$/p'

2. 去掉地址,只看指令

objdump -d -M intel test | awk '{print $2, $3, $4, $5}'

3. 使用 radare2 / Ghidra(进阶)

  • r2 ./test
  • Ghidra(GUI,适合大型对比)

四、总结一句话

在 CentOS 中,对比反汇编指令的核心是:用 objdump / gdb 生成汇编,再用 diff / vimdiff 对比不同语法、优化级别或版本差异

如果你有具体对比目标(比如“对比两个 so 文件”或“对比优化前后函数”),可以告诉我,我给你定制命令。

0