在 CentOS(以及大多数 Linux 发行版)里,“反汇编指令”一般指的是把二进制文件(可执行文件、库、内存等)反汇编成汇编代码。下面按常用工具和场景给你梳理一下,都是实际在 CentOS 上用过的:
CentOS 一般自带(binutils 包)
objdump -d ./a.out # 反汇编所有可执行代码段
objdump -d -M intel ./a.out # Intel 语法(默认是 AT&T)
objdump -S ./a.out # 源码+汇编(需编译时带 -g)
objdump -s -j .text ./a.out # 查看某段原始数据
常见用途:
gdb ./a.out
(gdb) disassemble main
(gdb) disassemble /m main # 混合源码
(gdb) set disassembly-flavor intel
(gdb) x/10i $pc # 看当前执行位置
适合:
readelf -h ./a.out
readelf -S ./a.out
readelf -s ./a.out
用来确认:
yum install nasm
ndisasm -b 64 shellcode.bin
适合:
yum install radare2
r2 ./a.out
[0x000000]> aaa
[0x000000]> pdf @ main
GHIDRA 是 GUI(Java),适合复杂逆向。
objdump -d vmlinux
objdump -d mydriver.ko
常用于:
-M intelbinutils:yum install binutils
如果你愿意,可以告诉我:
我可以直接给你对应的反汇编命令模板。