温馨提示×

ndisasm在CentOS怎么用

小樊
46
2026-08-04 08:43:50
栏目: 智能运维

ndisasmNASM 自带的反汇编工具,用来把二进制文件反汇编成 x86 汇编代码。在 CentOS 上使用步骤如下:


一、安装 ndisasm

ndisasm 包含在 nasm 包中。

1️⃣ 先确认是否已安装

which ndisasm

rpm -q nasm

2️⃣ 安装 NASM

sudo yum install -y nasm

如果是 CentOS 8 / Stream:

sudo dnf install -y nasm

安装完成后检查:

ndisasm -v

二、基本用法

1️⃣ 反汇编二进制文件

ndisasm -b 32 test.bin

常用参数说明:

参数 含义
-b 16 16 位模式(默认)
-b 32 32 位模式
-b 64 64 位模式
-o 设置起始偏移
-e 跳过文件开头字节
-s 指定起始地址

2️⃣ 反汇编 ELF / 可执行文件(不推荐直接用)

ndisasm 不是真正的 ELF 反汇编器,它只做“裸二进制反汇编”。

例如:

ndisasm -b 64 /bin/ls

⚠️ 这样会把整个文件当成机器码,结果通常不可读。


三、结合 objdump(更推荐)

如果是 ELF 可执行文件,用 objdump 更合适:

objdump -d /bin/ls

或反汇编某个函数:

objdump -d /bin/ls | less

四、常见示例

示例 1:反汇编 shellcode

ndisasm -b 32 shellcode.bin

示例 2:指定起始地址

ndisasm -b 32 -o 0x7c00 boot.bin

示例 3:跳过文件头

ndisasm -b 32 -e 512 disk.img

五、ndisasm vs objdump 对比

工具 适合场景
ndisasm 裸二进制、boot、shellcode
objdump ELF / 可执行文件

六、常见问题

❓ 为什么反汇编出来是乱码?

  • 模式不对(16/32/64)
  • 文件不是纯机器码
  • 偏移地址错误

❓ CentOS 没有 ndisasm?

sudo yum install nasm

如果你愿意,可以告诉我:

  • 你要反汇编的是 什么文件(boot、ELF、shellcode?)
  • 32 位还是 64 位

我可以给你一条完全可用的命令

0