简短结论:nm 不能用于反汇编 Linux(或任何二进制文件)。
nm 是做什么的nm(name list)的作用是显示目标文件或可执行文件中的符号表信息,例如:
示例:
nm /bin/ls
输出类似:
0000000000000000 T main
0000000000001234 T printf
它只列出符号,不会生成汇编代码。
应使用以下工具之一:
objdump(最常用)objdump -d /bin/ls
-d:反汇编代码段-M intel 使用 Intel 语法gdb(交互式反汇编)gdb /bin/ls
(gdb) disassemble main
ndisasm(针对裸二进制)ndisasm -b 64 file.bin
radare2 / rizinIDA ProGhidra| 工具 | 是否能反汇编 |
|---|---|
nm |
❌ 不能 |
objdump |
✅ 能 |
readelf |
❌(只能看 ELF 结构) |
strings |
❌(只看字符串) |
nm是“看名字的”,不是“看代码的”;要反汇编 Linux 程序,请用objdump或gdb。
如果你有具体目标(比如反汇编内核、某个 so、或分析漏洞),可以告诉我,我可以给你更精确的命令。