温馨提示×

如何反汇编压缩的linux文件

小樊
55
2026-09-09 11:15:50
栏目: 智能运维

“反汇编压缩的 Linux 文件”这个说法通常包含几种不同场景,下面我按常见情况逐一说明,你可以对号入座。


一、先明确你指的是哪种“压缩的 Linux 文件”

1️⃣ 压缩的可执行文件(如 .gz / .xz / 自解压程序)

例如:

  • busybox.gz
  • 自解压的 Linux 内核镜像
  • 压缩的 ELF 可执行文件

✅ 正确做法:先解压,再反汇编


二、通用处理流程(最常见)

步骤 1:解压文件

file xxx.gz
gunzip xxx.gz
# 或
xz -d xxx.xz

如果是自解压脚本:

./self_extract

步骤 2:确认文件类型

file binary

典型输出:

ELF 64-bit LSB executable, x86-64

步骤 3:反汇编 ELF 文件

✅ 使用 objdump(最常用)

objdump -d binary > disasm.txt

查看函数:

objdump -d -M intel binary

✅ 使用 GDB(动态分析)

gdb ./binary
(gdb) disassemble main

✅ 使用 radare2(推荐逆向)

r2 -d binary
[0x000000]> aaa
[0x000000]> pdf

三、如果是对“压缩过的代码段”反汇编(进阶)

有些程序会:

  • 压缩 .text
  • 运行时解压再执行

例如:

  • UPX 压缩
  • Linux 内核 bzImage

1️⃣ 检测是否被打包

upx -t binary

2️⃣ 脱壳(UPX 示例)

upx -d binary

然后再反汇编。


四、Linux 内核镜像(特殊情况)

1️⃣ 解压内核

file vmlinuz
# 通常是 bzImage

使用 extract-vmlinux:

./scripts/extract-vmlinux vmlinuz > vmlinux

2️⃣ 反汇编内核

objdump -d vmlinux

五、如果“压缩文件”是指固件 / 映像

例如:

  • rootfs.squashfs
  • uImage

步骤:

unsquashfs rootfs.squashfs

然后进入 squashfs-root 找 ELF 文件再反汇编。


六、总结一句话

不要直接反汇编压缩文件,先解压 / 脱壳,得到 ELF 后再用 objdump / radare2 / gdb 分析。


如果你能贴出:

  • 文件类型(file 输出)
  • 文件名或用途(内核?程序?固件?)

我可以给你更精确的步骤甚至命令。

0 踩