在 CentOS(及其他 Linux 发行版)下,“反汇编”通常指把可执行文件 / 目标文件 / 内存中的机器码转成汇编指令。常用工具和输出方式如下。
objdump(最常用)objdump -d test
-g)objdump -S test
objdump -d test | grep -A 30 '<main>:'
或(ELF 更可靠):
objdump -d --start-address=0x400520 --stop-address=0x400560 test
objdump -d -m arm test
gdb(调试时反汇编)gdb ./test
disassemble
disassemble main
disassemble 0x400520, 0x400560
layout asm
或
disassemble /m main
objcopy + ndisasm(裸二进制)适合 Bootloader、Shellcode:
objcopy -O binary test test.bin
ndisasm -b 64 test.bin
gdb -p <pid>
(gdb) disassemble 0x7fxxxxxx
或用 /proc:
cat /proc/<pid>/maps
objdump -d -M intel test
set disassembly-flavor intel
disassemble main
0000000000400520 <main>:
400520: 55 push %rbp
400521: 48 89 e5 mov %rsp,%rbp
400524: b8 00 00 00 00 mov $0x0,%eax
400529: 5d pop %rbp
40052a: c3 ret
如果你愿意,可以告诉我:
我可以给你更精确的反汇编命令。