Join Us and become a Member for a Verified Badge to access private areas with the latest PS4 / PS5 PKGs.
PS5 CFW and Hacks       Thread starter PSXHAX       Start date Feb 9, 2024 at 9:41 AM       20      
Status
Not open for further replies.
Developer idlesauce on Github released a PS4 / PS5 EBOOT DLC Patcher Python Script crediting @jocover for discovering the functions used to load DLCs intended for use with PlayStation 4 Fake PKGs running on Exploited PlayStation 5 consoles where the PS4 DLC FPKGs currently aren't working. 🤩

Download: ps4-eboot-dlc-patcher-framework-dependent.zip (914 KB) / ps4-eboot-dlc-patcher-linux-arm64 (7.76 MB) / ps4-eboot-dlc-patcher-linux-x64 (7.45 MB) / ps4-eboot-dlc-patcher-win-arm64.exe (6.66 MB) / ps4-eboot-dlc-patcher-win-x64.exe (6.42 MB) / ps4-eboot-dlc-patcher-main.zip / GIT

Spoiler: Depreciated

@BedroZen reports on Twitter he's already working on some patched PS4 games, with further details from the accompanying README.md: PS4-EBOOT-DLC-Patcher

This is intended to be used on ps5 where dlc fpkgs dont work. It automatically patches the eboot (or other executables) to use custom prx which replaces calls to the libSceAppContent and libSceNpEntitlementAccess library to load dlcs from the base pkg.

Tools
Download
Other os and arch binaries are available here.

Releases with os and architecture tags are compiled with native AOT, so they dont require any dependencies other than an ansi compatible terminal, which is default on windows 10 and above, if you happen to use an older windows version conemu works.

There is also a framework-dependent release which is cross-platform, but requires the dotnet 8 runtime, you can run it like this:
Code:
dotnet ps4-eboot-dlc-patcher.dll <args>

Instructions

Spoiler: Video tutorial by Modded Warfare

The following instructions are for Patch Builder, using the other options may require additional steps, like modifying the param.sfo and resigning the executables manually, PkgEditor uses uroot instead of Image0.
  1. Extract the update pkg of the game, or if the game is base only or merged base+update, then extract the Sc0 and sce_sys folders along with the executables to patch. The executables you need will most likely be eboot.bin and other .elf files (most games only use the eboot.bin) (it could also be .prx, but ignore .prx files in the sce_module folder)
  2. Run selfutil on the executables to unsign them.
  3. For the easiest usage copy all the dlc pkgs and executables into a folder then highlight and drag them onto the ps4-eboot-dlc-patcher exe. (You can also drag just the dlc pkgs onto it and enter the executables paths in the menu, or enter all paths as cli arguments)
  4. Select patch executable(s) and wait for the patcher to do its thing
  5. After its done it'll ask you if you want to list the corresponding folder names for each dlc to copy the data into, or automatically extract dlc data. Choose automatic and enter the path to the extracted update's Image0 directory.
  6. The patcher outputs the patched executables in the same folder as the patcher exe/eboot_patcher_output, copy back the executables into the update folder. Make sure you rename the file back to what it was before you ran selfutil since it changes the extension to .elf! The dlcldr.prx always goes into the root of Image0 of the update, even if the executables to patch weren't in that folder.
  7. Repack the update
Limitations
  • Only functions that are in fw 9.xx are fully supported, so games backported to that version or older work. As far as I can tell as of now (latest is ps4 11.xx) there was only one new function added to the related libraries (sceNpEntitlementAccessGetGameTrialsFlag), I added this to the prx to avoid a certain crash if the game calls this however its not properly implemented, so games up to 11.xx may or may not work.
  • 99+% of games should work with the prx method, but there's a fallback to in executable handlers, however this only handles up to 99 dlcs, and doesn't support entitlement keys or entitlement access, for these scenarios the patcher will give a heads up.
  • I have encountered one game (Shadow of the Tomb Raider) that only accepts root directory mount points for dlcs, so the dlcXX subdirectory my patcher uses did not work (tested the mountpoint as /data which worked). Thankfully this game already checks for the dlc data in app0 so you can just copy the dlc files into the update and not even need patches with this app. I tested the mountpoint as /data/dlc00 with data both in that folder and in /data, and it didn't work, which means the game doesn't just strip the subdirectory, it completely disregards the mountpoint, not trusting what the "system" returns is unusual for a game to do, so this game is an exception, this shouldn't be a widespread issue.
Notes
  • You cannot create update pkgs for remaster type pkgs, if the pub tools detect that the param.sfo contains a REMASTER_TYPE field, it'll fail, thankfully these pkgs are very rare, and if you encounter them you can edit the sfo and repack the base.
  • If you are creating the dlcXX folders manually, keep in mind there are two types of dlcs, With Extra Data, and Without extra data. This is the pkg type, it doesn't not necessarily mean that the dlc has files, but this type is passed to the game, and the game might choose call mount on all dlcs marked as with extra data, check for files in the folders, this would fail if you didn't create an empty folder, so to avoid potentially unexpected behavior create these folders even for dlcs that don't have any files.
Credits and thanks
Spoiler: Previous README.md

Spoiler: Related Tweets
PS4 PS5 EBOOT DLC Patcher Python Script for FPKGs by IdleSauce.jpg
 

Comments

I could not make this work with Infinite Warfare. Everything works, except the part where it needs to find the content Ids with the eboot_patcher.py script. It doesn't find anything and the manual mode doesn't do much either.
Code:
CODIWTHEDLC10001
CODIWTHEDLC20001
CODIWTHEDLC30001
CODIWTHEDLC40001

9izHQYA.png


FvXfohv.png


OREf9gE.png

Selecting the string by double clicking or selecting ok always give the same error

bXc3QLa.png

 
Status
Not open for further replies.
Back
Top