Contents
IMG2 files were the original method of holding a payload for iDevices. While the extension .img2
was commonly used in IPSW files, these files were actually 8900 files wrapping an IMG2 file. IMG2 files can only be parsed by iBoot-304 (iPhone OS 2.0 beta 3) or earlier and the S5L8900. Later iBoot versions (and consequently, later processors) have no support for this format.
File Format
Img2 { 0 u8[4] magic // '2gmI' ('Img2' in little endian) 4 u8[4] imageType // contained image (in little endian) 8 u16 --unknown A u16 epoch C u32 flags1 10 u32 payloadLengthPadded 14 u32 payloadLength 18 u32 --unknown 1C u32 flags2 // 0x01000000 is unset? 20 u8[64] --unknown 60 u32 // possibly the string length of VersionTag.version 64 u32 headerCSum // crc32(file[0:0x64]) 68 u32 cSum2 6C u32 --unknown // always 0xFFFFFFFF? 70 VersionTag version 90 u8[0x370] padding 400 u8[] payload // sizeof(payload) == payloadLengthPadded } VersionTag { 0 u8[4] magic // 'srev' ('vers' in little endian) 4 --unknown 8 u8[24] version // "EmbeddedImages-##" (terminated with a null and 0xFF) }
Known Image Types
The imageType
value (located at offset 0x4
) specifies what payload is contained in this file. It is stored in little endian form, but presented in big endian; Reverse the four bytes to get the stored form. These are the known possible values:
logo
: AppleLogobatC
: BatteryChargingbatl
: BatteryLow0batL
: BatteryLow1dtre
: DeviceTreeibot
: iBootllbz
: LLBnsrv
: NeedServicerecm
: RecoveryMode