温馨提示×

怎样输出反汇编

小樊
45
2026-08-20 07:22:25
栏目: 编程语言

“输出反汇编”通常指把可执行文件、目标文件或内存中的机器码转换成汇编指令。不同平台和工具做法不同,下面按常见情况给你一个速查表。


一、Linux / macOS(最常用)

1️⃣ 使用 objdump(最通用)

objdump -d a.out

常用选项:

objdump -M intel -d a.out    # Intel 语法(默认是 AT&T)
objdump -S a.out             # 源码 + 汇编混合

2️⃣ 使用 gdb(调试时反汇编)

gdb ./a.out

进入后:

disassemble main
disassemble 0x401000

指定行数:

disassemble main,+20

3️⃣ 使用 ndisasm(适合裸二进制)

ndisasm -b 32 test.bin
ndisasm -b 64 test.bin

二、Windows

1️⃣ 使用 x64dbg / OllyDbg(推荐)

  • 打开 exe
  • 在 CPU 窗口直接看到反汇编

2️⃣ 使用 dumpbin(MSVC)

dumpbin /DISASM test.exe

3️⃣ WinDbg

uf main

三、从内存 / 直接输出(编程方式)

1️⃣ Python + Capstone(跨平台,专业)

from capstone import *

md = Cs(CS_ARCH_X86, CS_MODE_64)
with open("a.out", "rb") as f:
    code = f.read()

for i in md.disasm(code, 0x1000):
    print(f"0x{i.address:x}:\t{i.mnemonic}\t{i.op_str}")

2️⃣ C/C++(__asm 或反汇编库)

C 本身不能直接反汇编,需要:

  • 调用 libcapstone
  • 或读机器码自己解析

四、常见对照示例

C 源码

int add(int a, int b) {
    return a + b;
}

反汇编(x86-64, Intel 语法)

mov eax, edi
add eax, esi
ret

五、选哪个工具?

场景 推荐
学习汇编 objdump / gdb
调试程序 gdb / x64dbg
逆向分析 IDA / Ghidra
脚本分析 Python + Capstone

如果你能告诉我:

  • ✅ 操作系统
  • ✅ 文件类型(exe / elf / bin)
  • ✅ 是否调试程序
  • ✅ 是否用于逆向分析

我可以给你更精确的命令和示例

0