在 CentOS(或其他 Linux) 上,“反汇编指令怎么看”通常是指 把可执行文件或进程中的机器码反汇编成汇编代码。下面按最常见的使用场景给你一个完整说明。
在 CentOS 上,最常用的是:
| 工具 | 说明 |
|---|---|
objdump |
GNU binutils 自带,最常用 |
gdb |
调试时可反汇编 |
radare2 |
专业逆向工具 |
ndisasm |
NASM 自带,适合裸二进制 |
llvm-objdump |
LLVM 工具链 |
一般系统自带 objdump + gdb,优先用它们。
objdump -d test
示例:
objdump -d ./a.out
输出类似:
0000000000401136 <main>:
401136: 55 push %rbp
401137: 48 89 e5 mov %rsp,%rbp
40113a: b8 2a 00 00 00 mov $0x2a,%eax
40113f: 5d pop %rbp
401140: c3 ret
objdump -d a.out | grep -A 20 "<main>"
objdump -S a.out
⚠️ 编译时要加 -g:
gcc -g -o a.out main.c
objdump -M intel -b elf32-i386 -d a.out
objdump -M intel -d a.out
对比:
| AT&T | Intel |
|---|---|
mov %eax,%ebx |
mov ebx, eax |
gdb ./a.out
disassemble
或:
disas main
set disassembly-flavor intel
disas main
disas 0x401136,0x401150
x/5i $pc
objdump -d /lib64/libc.so.6 | less
nm a.out
objdump -t a.out
如果是 没有 ELF 头的文件:
ndisasm -b 64 shellcode.bin
或:
objdump -b binary -m i386:x86-64 -D shellcode.bin
以 objdump 输出为例:
401136: 55 push %rbp
| 部分 | 含义 |
|---|---|
401136 |
指令地址 |
55 |
机器码 |
push %rbp |
汇编指令 |
sudo yum install binutils gdb nasm
gcc -g -o test test.cobjdump -M intel -S testgdb ./testdisas main如果你愿意,可以告诉我:
我可以直接按你的场景给你 具体命令 + 逐行解释。