ExeFS

From 3dbrew
Revision as of 10:34, 8 June 2012 by 3dsguy (talk | contribs)
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:

  • .code Contains the code binary, which can be optionally reverse-LZSS compressed via an exheader flag.
  • logo Contains distribution licensing Binary data.
  • banner Contains the banner which homemenu uses for this CXI.
  • icon Contains the icon which homemenu displays for this CXI.

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