A background payload for PlayStation 5 that automatically allows system library sideloading.
Backpork monitors game launches on the PS5. When a game (PPSA/CUSA title) is launched, it automatically mounts a fakelib folder from the game's app directory over the game's library path using unionfs. This allows for library replacement/injection without modifying originals files.
Original concept and some code by idlesauce
- Game Launch Detection: When a game is launched, it retrieves the app info to get the title ID (PPSA/CUSA format)
- Sandbox Discovery: Locates the game's sandbox directory at
/mnt/sandbox/<title_id>_XXX/ - Fakelib Check: Checks if a
fakelibfolder exists in the game'sapp0directory - Union Mount: If fakelibs exist, mounts them over the game's
common/libdirectory using unionfs - Cleanup: When the game exits, unmounts the fakelibs and cleans up the sandbox directory
- PS5 Payload SDK
- A jailbroken PS5 with payload execution capability
export PS5_PAYLOAD_SDK=/path/to/sdk
make- This produces
ps5-backpork.elf
- Place your replacement libraries in a
fakelibfolder inside the game's installation directory (PPSSAXXXXX/fakelib/) - Run the
backpork.elfpayload on your PS5 - Launch your game - the fakelibs will be automatically mounted
- When the game closes, cleanup is performed automatically
The libraries you want to sideload must come from a firmware version compatible with the game you want to run. However, you cannot use them directly - they must be modified to remove dependencies that are not available on your current firmware, otherwise the loader will crash.
It is recommended to sideload as few libraries as possible, as there is no guarantee that there won't be side effects. Most games seem to only need the two Agc libraries, but some games like Minecraft required additional libraries.
I provide patches in the patches/ folder (BPS format) to patch libraries from firmware 10.01 and make them functional on firmware 7.61. This is probably achievable for lower firmwares as well, but it has not been tested and would require additional patches.
To apply a patch:
- The library to patch must be decrypted (ELF format, not SELF)
- Use an online patcher like RomPatcher.js
- Select the decrypted library as the ROM file
- Select the corresponding
.bpspatch file - Apply the patch
- Fake sign the patched library (make_fself.py)
- Use the resulting library in your
fakelibfolder
This software is provided "as is", without warranty of any kind. I do not guarantee anything and I am not responsible for any damage or issues that may occur. Use at your own risk.
This project is provided for educational and research purposes.
- idlesauce For the idea, code and support
- john-tornblom For the SDK
- SlimGary For supporting me all the way through the process, for believing in me, for fixing my Xbox Series X for free, and for adding Peppa Pig to Steam. None of this would have happened without him.