Showing posts from January, 2014

Reversing Wii U Executables

First thing to say, Wii U uses Executable and Linkable Format (ELF) with dynamic linking (since Wii U has a real OS), but they are different from the normal ones:Wii U libraries are called RPLWii U executables are called RPX, but these are actually RPL.The only difference between RPX and RPL is that the first one has the main entry point, but both are ELFs.Ok, so this is what i understood about the header: /* Total size 0x500 -> elf + section table */ typedef struct __cafe_elf { uint8_t e_ident[0x10]; // {0x7f,0x45,0x4c,0x46, <-- 'elf' // 0x01, <-- one // 0x01,0x05, <-- sdk version ? // 0xca,0xfe, <-- 0xcafe // 0x00,0x00, ... ,0x00} uint16_t e_type; // 0xfe01 = rpl uint16_t e_machine; // 0x0014 PPC uint32_t e_version; // 0x00000001 uint32_t e_entry; // 0x02000000 uint32_t e_phoff; // 0x00000000 uint32_t e_shoff; // 0x00000040 uint32_t e_flags; // 0x00000000 uint16_t e_ehsize; // 0x0032 (54) uint16_t e_phe…