固件是由三部分组成:固件头、kernel、rootfs。我们可以通过mkimage工具分析固件头,用binwalk来解包固件分析kernel和rootfs,通常rootfs一般是squashfs格式的。下面我来一步步给大家剖析,每个部分的细节。
1- 固件头,用于让uboot可以识别固件,解压等非常关键的信息。
2- kernel
3- rootfs
4- 填充区(为了取整)
BroadCom(博通)trx固件头定义(HDR0)
struct trx_header {
uint32_t magic; /* "HDR0" */
uint32_t len; /* Length of file including header */
uint32_t crc32; /* 32-bit CRC from flag_version to end of file */
uint32_t flag_version; /* 0:15 flags, 16:31 version */
uint32_t offsets[4]; /* Offsets of partitions from start of header */
};
MediaTek(联发科)、QualCom(高通 )u-boot固件头定义
#define IH_MAGIC 0x27051956 /* Image Magic Number */
#define IH_NMLEN 32 /* Image Name Length */
/*
* Legacy format image header,
* all data in network byte order (aka natural aka bigendi