温馨提示×

怎么用Linux反汇编代码

小樊
67
2026-08-31 05:31:36
栏目: 智能运维

在 Linux 下“反汇编代码”通常指把可执行文件、目标文件或二进制程序转换成汇编代码,常见用途是逆向、调试、漏洞分析等。下面我按从简单到进阶给你一个完整实用指南。


一、最常见方式:objdump(最基础)

1️⃣ 反汇编整个可执行文件

objdump -d a.out

2️⃣ 反汇编指定函数

objdump -d a.out | grep -A 20 main

3️⃣ 显示源码 + 汇编(如果有调试信息)

objdump -S a.out

4️⃣ Intel 语法(默认是 AT&T)

objdump -M intel -d a.out

✅ 适合:快速查看汇编
❌ 不适合:复杂逆向、库函数太多


二、最推荐方式:GDB(调试 + 反汇编)

1️⃣ 启动 GDB

gdb ./a.out

2️⃣ 反汇编当前函数

disassemble

3️⃣ 反汇编指定函数

disassemble main

4️⃣ Intel 语法

set disassembly-flavor intel
disassemble main

5️⃣ 查看某段内存的汇编

x/10i $rip

✅ 非常适合:调试、结合运行态分析
✅ 可单步、下断点、看寄存器


三、专业逆向工具:radare2(强烈推荐)

1️⃣ 安装

sudo apt install radare2

2️⃣ 分析程序

r2 ./a.out

进入后:

aaa        # 自动分析
s main     # 定位 main
pdf        # 反汇编函数

3️⃣ Intel 语法

e asm.syntax = intel
pdf

✅ 优点:

  • 自动识别函数
  • 符号、引用、交叉分析
  • 非常适合逆向工程

四、最强工具:Ghidra / IDA(图形化)

Ghidra(免费)

# 下载后运行
ghidraRun

✅ 特点:

  • C 伪代码 + 汇编
  • 函数调用图
  • 适合大型程序

五、反汇编“裸二进制”(无 ELF 头)

1️⃣ 使用 ndisasm

ndisasm -b 64 binary.bin

2️⃣ 或 objdump

objdump -b binary -m i386:x86-64 -D binary.bin

✅ 适合:shellcode、固件、裸机程序


六、常见格式对照

工具 用途
gcc 编译
objdump 静态反汇编
gdb 动态调试
radare2 专业逆向
Ghidra 高级逆向

七、示例:完整流程

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

或

gdb ./test
(gdb) set disassembly-flavor intel
(gdb) disassemble main

八、常见用途提醒

⚠️ 合法使用

  • 自己写的程序
  • 授权分析
  • 学习 / 安全研究

❌ 不可用于:

  • 破解软件
  • 绕过授权
  • 非法渗透

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

  • 你是分析 C 程序 / 病毒 / shellcode / 固件?
  • x86 / x64 / ARM?
  • 想看源码级还是纯汇编?

我可以给你针对性的命令和学习路线。

0 踩