“输出反汇编”通常指把可执行文件、目标文件或内存中的机器码转换成汇编指令。不同平台和工具做法不同,下面按常见情况给你一个速查表。
objdump(最通用)objdump -d a.out
常用选项:
objdump -M intel -d a.out # Intel 语法(默认是 AT&T)
objdump -S a.out # 源码 + 汇编混合
gdb(调试时反汇编)gdb ./a.out
进入后:
disassemble main
disassemble 0x401000
指定行数:
disassemble main,+20
ndisasm(适合裸二进制)ndisasm -b 32 test.bin
ndisasm -b 64 test.bin
dumpbin(MSVC)dumpbin /DISASM test.exe
uf main
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}")
__asm 或反汇编库)C 本身不能直接反汇编,需要:
libcapstoneint add(int a, int b) {
return a + b;
}
mov eax, edi
add eax, esi
ret
| 场景 | 推荐 |
|---|---|
| 学习汇编 | objdump / gdb |
| 调试程序 | gdb / x64dbg |
| 逆向分析 | IDA / Ghidra |
| 脚本分析 | Python + Capstone |
如果你能告诉我:
我可以给你更精确的命令和示例。