在 Linux 里需要分清 “脚本” 和 “可执行程序”,因为两者的“反汇编”含义不同。
例如:
#!/bin/bash
echo "hello"
✅ 这类是文本源码,不需要反汇编
你可以直接查看:
cat script.sh
less script.py
如果脚本被 加密 / 压缩 / 混淆,那是“解密”问题,不是“反汇编”。
例如:
./a.out
✅ 这才是可以反汇编的对象
objdump -d ./program
常用参数:
objdump -d -M intel ./program # Intel 语法
objdump -S ./program # 源码+汇编(需带调试信息)
gdb ./program
在 gdb 中:
disassemble main
查看某地址:
x/10i $pc
r2 ./program
常用:
aa # 分析
pdf # 反汇编当前函数
s main # 跳到 main
pdf
适合复杂程序、加密、混淆。
常见情况:
shc 编译 shell 脚本# 反汇编
objdump -d script.bin
# PyInstaller
strings program | grep pyz
❌ “反汇编 shell 脚本”
✅ 脚本是文本,不用反汇编
❌ “反编译 = 反汇编”
你可以告诉我:
file xxx 的输出)我可以直接给你对应命令或分析思路。