我有从电话中转储的固件。运行binwalk之后,我找到了uImage标头和zImage。标头说该图像未压缩,但是我已经读过zImage通常是用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)


评论

一种非常常见的做法(例如,典型的Linux内核Makefile)是使用zImage文件。由于zImage文件是自解压缩的(即不需要外部解压缩器),因此包装程序将指示此内核实际上是“未压缩”的。

Binwalk的熵分析告诉您什么?

#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