ExeFS or Executable Filesystem, is the part of the CXI, which is executed when the CXI is run. And contains:
AFTER DECRYPTION
The ExeFS header is 0x200 bytes long and follows this structure:
START | SIZE | DESCRIPTION |
---|---|---|
0x00 | 0x05 | Always '.code' |
0x05 | 0x03 | Reserved |
0x08 | 0x04 | ARM Code Offset* |
0x0C | 0x04 | ARM Code Length |
0x10 | 0x06 | Always 'banner' |
0x16 | 0x02 | Reserved |
0x18 | 0x04 | Banner Offset* |
0x1C | 0x04 | Banner Length |
0x20 | 0x04 | Always 'icon' |
0x24 | 0x04 | Reserved |
0x28 | 0x04 | Icon Offset |
0x2C | 0x04 | Icon Length |
0x30 | 0x04 | Always 'logo'** |
0x34 | 0x04 | Reserved |
0x38 | 0x04 | Logo Offset* ** |
0x3C | 0x04 | Logo Length** |
0x40 | 0x140 | Reserved |
0x180 | 0x20 | Logo Hash** |
0x1A0 | 0x20 | Icon Hash |
0x1C0 | 0x20 | Banner Hash |
0x1E0 | 0x20 | ARM Code Hash |
* Offsets are non-inclusive of the header's size(0x200 bytes).
** The 'Logo' is not a compulsory part of ExeFS, so an ExeFS without a 'Logo', will have these entries of the header filled with zeros. .