ndisasm 是 NASM 自带的反汇编工具,用来把二进制文件反汇编成 x86 汇编代码。在 CentOS 上使用步骤如下:
ndisasm 包含在 nasm 包中。
which ndisasm
或
rpm -q nasm
sudo yum install -y nasm
如果是 CentOS 8 / Stream:
sudo dnf install -y nasm
安装完成后检查:
ndisasm -v
ndisasm -b 32 test.bin
常用参数说明:
| 参数 | 含义 |
|---|---|
-b 16 |
16 位模式(默认) |
-b 32 |
32 位模式 |
-b 64 |
64 位模式 |
-o |
设置起始偏移 |
-e |
跳过文件开头字节 |
-s |
指定起始地址 |
ndisasm 不是真正的 ELF 反汇编器,它只做“裸二进制反汇编”。
例如:
ndisasm -b 64 /bin/ls
⚠️ 这样会把整个文件当成机器码,结果通常不可读。
如果是 ELF 可执行文件,用 objdump 更合适:
objdump -d /bin/ls
或反汇编某个函数:
objdump -d /bin/ls | less
ndisasm -b 32 shellcode.bin
ndisasm -b 32 -o 0x7c00 boot.bin
ndisasm -b 32 -e 512 disk.img
| 工具 | 适合场景 |
|---|---|
| ndisasm | 裸二进制、boot、shellcode |
| objdump | ELF / 可执行文件 |
sudo yum install nasm
如果你愿意,可以告诉我:
我可以给你一条完全可用的命令。