ExeFS

From 3dbrew
Revision as of 11:22, 8 June 2012 by 3dsguy (talk | contribs) (Documenting ExeFS header)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

ExeFS or Executable Filesystem, is the part of the CXI, which is executed when the CXI is run. And contains the compiled ARM Code, Banner, 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:

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. .