解压 zImage

逆向工程 艾达 固件 解压
2021-06-25 12:22:33

我有一个从手机上卸载的固件。运行 binwalk 后,我发现了一个 uImage 标头和一个 zImage。标题说图像是未压缩的,但是我读过 zImages 通常是用 lzma、xz、gzip 等压缩的。这是否意味着 zImage 是未压缩的,我可以直接使用它,而无需解压缩它?

352768        0x56200         uImage header, header size: 64 bytes, header CRC: 0xFAAD7908, created: 2015-09-01 19:12:03, image size: 1283768 bytes, Data Address: 0xC8008000, Entry Point: 0xC8008000, data CRC: 0xB0AF08F8, OS: Linux, CPU: ARM, image type: OS Kernel Image, compression type: none, image name: "Linux-3.4.20-rt31-dvf-v1.2.6.1-r"
352832        0x56240         Linux kernel ARM boot executable zImage (little-endian)
1个回答

zImage内核中的含义是“无压缩”,它可以只复制到RAM中的一些地方,从那里,而不进行额外的降压工序运行。内核的大部分仍然被压缩(最常见的是使用 gzip),但是有一个小的未压缩存根预置在它之前进行解压缩。因此,根据您的目标,您可以只反汇编文件的开头以查看解压缩器代码,或者找到压缩数据(搜索1F 8B是一个很好的起点),对其进行解压缩,然后对其进行反汇编。

https://acassis.wordpress.com/2015/06/04/how-to-recover-and-decompress-a-linux-kernel-dumped-mtd-partition/

您还可以尝试extract-vmlinux尝试自动执行这些步骤脚本:https : //github.com/torvalds/linux/blob/master/scripts/extract-vmlinux