“反汇编压缩的 Linux 文件”这个说法通常包含几种不同场景,下面我按常见情况逐一说明,你可以对号入座。
.gz / .xz / 自解压程序)例如:
busybox.gz✅ 正确做法:先解压,再反汇编
file xxx.gz
gunzip xxx.gz
# 或
xz -d xxx.xz
如果是自解压脚本:
./self_extract
file binary
典型输出:
ELF 64-bit LSB executable, x86-64
objdump -d binary > disasm.txt
查看函数:
objdump -d -M intel binary
gdb ./binary
(gdb) disassemble main
r2 -d binary
[0x000000]> aaa
[0x000000]> pdf
有些程序会:
.text例如:
upx -t binary
upx -d binary
然后再反汇编。
file vmlinuz
# 通常是 bzImage
使用 extract-vmlinux:
./scripts/extract-vmlinux vmlinuz > vmlinux
objdump -d vmlinux
例如:
rootfs.squashfsuImage步骤:
unsquashfs rootfs.squashfs
然后进入 squashfs-root 找 ELF 文件再反汇编。
不要直接反汇编压缩文件,先解压 / 脱壳,得到 ELF 后再用 objdump / radare2 / gdb 分析。
如果你能贴出:
file 输出)我可以给你更精确的步骤甚至命令。