SELF File Format: Difference between revisions

From PS4 Developer wiki
Jump to navigation Jump to search
Line 39: Line 39:
typedef struct
typedef struct
{
{
  unsigned long long unknown;
  unsigned short unknown_1;
unsigned short unknown_2;
unsigned int padding;
  unsigned long long offset;
  unsigned long long offset;
  unsigned long long encrypted_compressed_size
  unsigned long long encrypted_compressed_size

Revision as of 23:14, 25 February 2019

ORBIS SELFs from PS4 have a somewhat different structure from the ones we see on vita and ps3. The structure is documented as follows:

SELF Header Structure

Offset Size Description Notes
0 4 Magic 4F 15 3D 1D
0x4 4 Unknown Always 00 01 01 12
0x8 1 Unknown Always 1
0x9 1 Key Type 0xC SK, 0xF SL, 0xE SM, 0x8 EBOOT and ELF and SELF, 0x9 SPRX and SDLL and SEXE
0xA 2 Padding
0xC 2 MetaData Offset
0xE 2 MetaData Size
0x10 4 Size of SELF
0x14 4 Padding
0x18 2 Unknown 1 SK, 2 SL and Modules, 4 SK Elfs, 6 .selfs, 2 .sdll, 6 .sprx, 6 ShellCore, 6 eboot.bin, 2 sexe
0x1A 2 Unknown Always 0x22
0x1C 4 Padding

Self Segment Structure

At 0x20 the following structure follows

typedef struct
{
 unsigned short unknown_1; 
 unsigned short unknown_2;
 unsigned int padding;
 unsigned long long offset;
 unsigned long long encrypted_compressed_size
 unsigned long long decrypted_decompressed_size ;
} SEGMENT_TABLE;