温馨提示×

linux反汇编gcc怎么弄

小樊
41
2026-10-26 22:38:09
栏目: 智能运维

在 Linux 下用 GCC 做“反汇编”(把编译后的程序或目标文件转成汇编代码),常见做法有几种,下面按使用场景给你整理一下。


一、用 GCC 直接生成汇编代码(最常用)

1️⃣ 只编译到汇编,不生成可执行文件

gcc -S test.c

会生成:

test.s   ← 汇编代码

想看更直观的 Intel 语法(x86):

gcc -S -masm=intel test.c

2️⃣ 生成可执行文件后再反汇编

先用 GCC 编译:

gcc -o test test.c

再用 objdump 反汇编:

objdump -d test

只看 main 函数:

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

Intel 语法:

objdump -d -M intel test

二、查看目标文件(.o)的汇编

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

三、带调试信息,反汇编更清晰

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

或者配合 gdb:

gdb ./test
(gdb) disassemble main

Intel 语法:

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

四、GCC 内联汇编 / 优化级别影响很大

gcc -O0 -S test.c     # 不优化,好读
gcc -O2 -S test.c     # 优化后,难读

五、常见工具对比

工具 用途
gcc -S 源码 → 汇编
objdump -d 二进制 → 汇编
gdb disassemble 调试中看汇编
nm 看符号
readelf 看 ELF 结构

六、推荐学习组合

gcc -S -masm=intel -O0 test.c
objdump -d -M intel ./test
gdb ./test

如果你是:

  • ✅ 学汇编
  • ✅ 逆向分析
  • ✅ 看编译器怎么优化
  • ✅ CTF / 二进制安全

可以告诉我你的具体目的,我可以给你更针对性的命令和示例。

0 踩