1,509 bytes added
, 10:22, 8 June 2012
ExeFS or Executable Filesystem, is the part of the CXI, which is executed when the CXI is run. And contains the compiled ARM Code, [[File Formats|Banner]], [[SMDH|Icon]] and [[Logo]](the logo is not a necessary part of ExeFS). The ExeFS for all retail CXI is encrypted.
=== AFTER DECRYPTION ===
The ExeFS header is 0x200 bytes long and follows this structure:
{| class="wikitable" border="1"
|-
! 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
|-
|}
<nowiki>* Offsets are non-inclusive of the header's size(0x200 bytes).</nowiki>
<nowiki>** 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.</nowiki>
.