Editing Initial Program Loader
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
Initial Program Loader, abbreviated as IPL, is a PSP program that runs on boot and loads Kernel. IPL is loaded by [[ | Initial Program Loader, abbreviated as IPL, is a PSP program that runs on boot and loads Kernel. IPL is loaded by [[PRE-IPL]]. IPL can be stored either on the NAND or on a [[Magic Memory Stick]], depending on the PRE-IPL code and if a [[JigKick Battery]] is inserted or not. | ||
IPL is divided into chunks of 0x1000 bytes, the size of the buffer used at address 0xBFD00000 where they are decrypted. The IPL blocks are standard KIRK cmd 1 blocks and passed directly to [[KIRK Crypto Engine]] for decryption. | |||
= Tools = | = Tools = | ||
Line 13: | Line 13: | ||
[https://github.com/zecoxao/ipltool ipltool by zecoxao and others] | [https://github.com/zecoxao/ipltool ipltool by zecoxao and others] | ||
== IPL SDK == | == Custom IPL SDK == | ||
* [https://github.com/mathieulh/PSP_IPL_SDK PSP_IPL_SDK by mathieulh] | * [https://github.com/mathieulh/PSP_IPL_SDK PSP_IPL_SDK by mathieulh] | ||
* [https://github.com/DaveeFTW/iplsdk iplsdk by davee] | * [https://github.com/DaveeFTW/iplsdk iplsdk by davee] | ||
== Bruteforce forger == | == Bruteforce forger == | ||
Line 23: | Line 22: | ||
[https://github.com/mathieulh/Kirk-Bruteforce Kirk-Bruteforce by Team C+D] | [https://github.com/mathieulh/Kirk-Bruteforce Kirk-Bruteforce by Team C+D] | ||
= | = IPL Boot Sequence = | ||
IPL | |||
The decrypted IPL is composed of 3 parts: Part1 - the 'loader', Part2 - 'main.bin', and Part3 - the 'payload'. | |||
Part1 is plaintext MIPS code, Part2 is gzip compressed, and Part3 is again encrypted (from 2.60 onwards, parts 2 & 3 are further encrypted again). | |||
Part1 is plaintext MIPS code, Part2 is gzip compressed, and Part3 is again encrypted (from 2.60 onwards, parts 2 & 3 are further encrypted again). | |||
== Part1 IPL (the loader) == | == Part1 IPL (the loader) == | ||
Line 50: | Line 32: | ||
One of the first things Part1 IPL does is reset the main CPU. | One of the first things Part1 IPL does is reset the main CPU. | ||
After reset the | After reset the PRE-IPL mask ROM device is no longer mapped to memory at all (the 0x1FC00000 address range is then remapped to the 4KB RAM mentioned above to be used for the ME reset vector). This is why the PRE-IPL is no longer accessible once the IPL has booted. | ||
Part1 IPL does some very basic hardware inits and decompresses the gzipped Part2 IPL (main.bin) to address 0x04000000 (still in EDRAM). | Part1 IPL does some very basic hardware inits and decompresses the gzipped Part2 IPL (main.bin) to address 0x04000000 (still in EDRAM). | ||
Line 68: | Line 50: | ||
== Part3 IPL (the payload) == | == Part3 IPL (the payload) == | ||
TODO | |||
= Custom IPL loading = | |||
See | See [[Pandora]]. | ||
= See also = | = See also = |