在 Linux 下“反汇编脚本文件”这个说法需要先澄清一下,因为脚本文件(如 Shell、Python、Perl 等)本身是文本,不是机器码,所以严格来说不能像二进制程序那样反汇编。下面按不同情况说明:
✅ 不需要反汇编,直接看源码
cat script.sh
less script.py
vim script.pl
如果你看到的是加密或压缩过的脚本,常见情况:
shc 会把 shell 脚本编译成二进制:
file script.x
# ELF 可执行文件
此时可以:
strings script.x
或反汇编 ELF:
objdump -d script.x
✅ 这才是真正可以反汇编的
objdump -d ./program
反汇编并看源码对照:
objdump -S ./program
gdb ./program
(gdb) disassemble main
r2 -d ./program
[0x000000]> pdf
✅ 反编译,不是反汇编
python -m dis script.pyc
或用工具:
uncompyle6decompyle3luadec script.luac
| 文件类型 | 是否能反汇编 | 正确方式 |
|---|---|---|
| .sh | ❌ | 直接看文本 |
| .py | ❌ | dis / 反编译 |
| .pyc | ❌ | 反编译 |
| ELF | ✅ | objdump / gdb |
| shc 加密脚本 | ✅ | 当 ELF 处理 |
如果你能告诉我:
.sh / .py / 未知二进制)file 文件名 的输出我可以给你更精确的步骤。