在 Linux 里,“脚本文件”和“二进制可执行文件”是两类不同的东西,反汇编方式也不一样。下面按常见情况说明。
这类文件本身是文本源码,不是机器码,不能反汇编,只能“查看源码”或“反编译”。
cat script.sh
less script.py
有些脚本会被打包(如 shc 加密的 shell 脚本):
shc 生成的脚本:本质是二进制包装器例如:
shc 编译的 shell 脚本PyInstaller 打包的 Pythongcc 编译的程序这才需要反汇编。
file xxx
输出示例:
xxx: ELF 64-bit LSB executable, x86-64
objdump -d xxx
反汇编主代码段:
objdump -d -M intel xxx
查看符号:
objdump -t xxx
gdb xxx
(gdb) disassemble main
rizin -d xxx
[0x000000]> aaa
[0x000000]> pdf
例如 PyInstaller:
pyinstxtractor xxx
.pyc:uncompyle6 main.pyc
| 文件类型 | 是否需要反汇编 | 方法 |
|---|---|---|
| .sh / .py 源码 | ❌ | cat / 编辑器 |
| shc 加密 shell | ✅ | objdump / ghidra |
| ELF 可执行 | ✅ | objdump / gdb / ghidra |
| PyInstaller | ⚠️ | 提取 + 反编译 |
如果你能告诉我:
file 输出)我可以给你更精确的操作步骤。