Jump to content
Swaqq

[RELEASE] PS4 SPRX (Creating/Loading)

Recommended Posts

Posted (edited)

Hello Everyone!

 

Today I'll be showing you guys how PRX module loading works on PS4 and how to create them!

 

First things first I wanted to make some notes about this topic.

 

As you may know if your from the PS3 scene, the SPRX compiler is absolute garbage. This is no longer an issue anymore, as everything I've tested has worked just fine!

 

    I also wanted to mention some of the issues Sabotage and I ran into while working on this project. When I first started this project, I just built an SPRX and loaded it into WebKit and it worked just fine. The next challenge was getting it to load in-game. My first thought was to use 2much4u's method of loading a payload into the game, which we did and executed the SPRX through his payload. Then we realized it wasn't working because the path didn't exist. The game couldn't find the path because we were stuck in the sandbox... So we broke out of it. Finally! We had it working! But then we realized... this is a lot of extra work, so Sabotage ported the jailbreak into ASM aswell as the rest of the code which loaded the SPRX, and we loaded it like that. The next problem we ran into was that the game kept crashing randomly. Eventually we realized that removing the game from the sandbox was creating the problem. This was because the game uses the path "/app0/", and while you're in the sandbox, the real path is "/mnt/sandbox/CUS.../app0/". By removing the process from it's sandbox, it was looking for the game in "/" which it wasn't there, and therefore crashing your game. We got around this by re-jailing the process and putting it back into the sandbox after our module was loaded.

 

 

Everything you'll need for creating and loading SPRX modules is in the zip file I've provided. This is using Sony's PS4 SDK which is not included, so get that on your own.

Currently, the app only supports COD4 1.02, but you can add support to other games on your own. There's a mini-tutorial in the PDF as-well as the tool it-self.

 

I WILL NOT be including my menu base anywhere, because it's literally just copied from my Xbox menu, however I'll release my research on the games.

 

 

VirusTotal (0/60)

Download (MediaFire)

PS4Prx.exe (Fixed)

 

Thanks and Happy Modding!

 

COD4.png

Edited by Swaqq

Share this post


Link to post
Share on other sites
18 minutes ago, Swaqq said:

Hello Everyone!

 

Today I'll be showing you guys how PRX module loading works on PS4 and how to create them!

 

First things first I wanted to make some notes about this topic.

 

As you may know if your from the PS3 scene, the SPRX compiler is absolute garbage. This is no longer an issue anymore, as everything I've tested has worked just fine!

 

    I also wanted to mention some of the issues Sabotage and I ran into while working on this project. When I first started this project, I just built an SPRX and loaded it into WebKit and it worked just fine. The next challenge was getting it to load in-game. My first thought was to use 2much4u's method of loading a payload into the game, which we did and executed the SPRX through his payload. Then we realized it wasn't working because the path didn't exist. The game couldn't find the path because we were stuck in the sandbox... So we broke out of it. Finally! We had it working! But then we realized... this is a lot of extra work, so Sabotage ported the jailbreak into ASM aswell as the rest of the code which loaded the SPRX, and we loaded it like that. The next problem we ran into was that the game kept crashing randomly. Eventually we realized that removing the game from the sandbox was creating the problem. This was because the game uses the path "/app0/", and while you're in the sandbox, the real path is "/mnt/sandbox/CUS.../app0/". By removing the process from it's sandbox, it was looking for the game in "/" which it wasn't there, and therefore crashing your game. We got around this by re-jailing the process and putting it back into the sandbox after our module was loaded.

 

 

Everything you'll need for creating and loading SPRX modules is in the zip file I've provided. This is using Sony's PS4 SDK which is not included, so get that on your own.

Currently, the app only supports COD4 1.02, but you can add support to other games on your own. There's a mini-tutorial in the PDF as-well as the tool it-self.

 

I WILL NOT be including my menu base anywhere, because it's literally just copied from my Xbox menu, however I'll release my research on the games.

 

 

VirusTotal (0/60)

Download (MediaFire)

 

Thanks and Happy Modding!

 

COD4.png

Gr8 release bloke!

Share this post


Link to post
Share on other sites
25 minutes ago, Swaqq said:

Hello Everyone!

 

Today I'll be showing you guys how PRX module loading works on PS4 and how to create them!

 

First things first I wanted to make some notes about this topic.

 

As you may know if your from the PS3 scene, the SPRX compiler is absolute garbage. This is no longer an issue anymore, as everything I've tested has worked just fine!

 

    I also wanted to mention some of the issues Sabotage and I ran into while working on this project. When I first started this project, I just built an SPRX and loaded it into WebKit and it worked just fine. The next challenge was getting it to load in-game. My first thought was to use 2much4u's method of loading a payload into the game, which we did and executed the SPRX through his payload. Then we realized it wasn't working because the path didn't exist. The game couldn't find the path because we were stuck in the sandbox... So we broke out of it. Finally! We had it working! But then we realized... this is a lot of extra work, so Sabotage ported the jailbreak into ASM aswell as the rest of the code which loaded the SPRX, and we loaded it like that. The next problem we ran into was that the game kept crashing randomly. Eventually we realized that removing the game from the sandbox was creating the problem. This was because the game uses the path "/app0/", and while you're in the sandbox, the real path is "/mnt/sandbox/CUS.../app0/". By removing the process from it's sandbox, it was looking for the game in "/" which it wasn't there, and therefore crashing your game. We got around this by re-jailing the process and putting it back into the sandbox after our module was loaded.

 

 

Everything you'll need for creating and loading SPRX modules is in the zip file I've provided. This is using Sony's PS4 SDK which is not included, so get that on your own.

Currently, the app only supports COD4 1.02, but you can add support to other games on your own. There's a mini-tutorial in the PDF as-well as the tool it-self.

 

I WILL NOT be including my menu base anywhere, because it's literally just copied from my Xbox menu, however I'll release my research on the games.

 

 

VirusTotal (0/60)

Download (MediaFire)

 

Thanks and Happy Modding!

 

COD4.png

Awesome hard work from you guys!! 🤠

Share this post


Link to post
Share on other sites

Awesome work as always man, look forward to playing around with it 😄

Share this post


Link to post
Share on other sites

I was messing around with this today and the documentation is neath. I've gotten everything to work fine but when I use flatz prx to sprx it just opens a command prompt which instantly exits not creating the new .sprx file in the process. 

Share this post


Link to post
Share on other sites
On 5/17/2018 at 2:06 PM, Algebra said:

I was messing around with this today and the documentation is neath. I've gotten everything to work fine but when I use flatz prx to sprx it just opens a command prompt which instantly exits not creating the new .sprx file in the process. 

 

On 3/24/2018 at 5:29 PM, Swaqq said:

In reply to your post

 

 

So I decided to not be lazy and figure out what the problem was. There wasn't an issue I just didn't have the correct version of Python installed when running flatz script. I installed Python version 2.7.13 and it worked along side the new updated release of Python for Windows. Thank's for the sweet write up really enjoyed reading it. 

Share this post


Link to post
Share on other sites
On 6/22/2018 at 4:48 PM, Duncan said:

Can someone tell me what this is and how it works?

This is a tutorial for creating an SPRX menu from a PRX file. You convert the PRX to SPRX using flatz python script. The write up is in the zip file. Once you create the SPRX file you can extract it to your PS4, it will execute when the game starts. It's used mostly to create mod menus for games.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By Matrix
      Hello everyone, been a little while since I've been on here but I've decided to release some research for the PS4 cod games. I know that a lot of people want the updated versions of the game, I've just chosen to stay on 1.00 so normal PS4s can delete the update and join with XBSLink over LAN. Anyways there's really not a lot here. Most of this game is very different so there are some things I don't want to put out there since I don't even have it reversed correctly. For BO3 I am just releasing my structs including Hud Elements, Clients, Entities and Level Locals. The only thing missing from here to make a menu is the functions for material index and text index for the hud elements. Like I said before this game is very different and the method I've been using is definitely not the way that the game wants so I'll leave it up to you to get working if you want to use any of this. Anyways here you go:
      Pastebin link: https://pastebin.com/kFTeqeeK

      By the way I tried doing spoilers to make the post not so long but I can't find how to do it so
       
      enum he_type_t { HE_TYPE_FREE = 0x0, HE_TYPE_TEXT = 0x1, HE_TYPE_VALUE = 0x2, HE_TYPE_PLAYERNAME = 0x3, HE_TYPE_MAPNAME = 0x4, HE_TYPE_GAMETYPE = 0x5, HE_TYPE_DAMAGE_INDICATOR = 0x6, HE_TYPE_SCORE = 0x7, HE_TYPE_MATERIAL = 0x8, HE_TYPE_TIMER_DOWN = 0x9, HE_TYPE_TIMER_UP = 0xA, HE_TYPE_TENTHS_TIMER_DOWN = 0xB, HE_TYPE_TENTHS_TIMER_UP = 0xC, HE_TYPE_CLOCK_DOWN = 0xD, HE_TYPE_CLOCK_UP = 0xE, HE_TYPE_WAYPOINT = 0xF, HE_TYPE_PERKS = 0x10, HE_TYPE_COUNT = 0x11, }; struct hudelem_color_t { char r, g, b, a; }; struct __declspec(align(4)) hudelem_s { float x; //0x0 float y; //0x4 float z; //0x8 float fontScale; //0xC float fromFontScale; //0x10 int fontScaleStartTime; //0x14 hudelem_color_t color; //0x18 hudelem_color_t fromColor; //0x1C int fadeStartTime; //0x20 int scaleStartTime; //0x24 float fromX; //0x28 float fromY; //0x2C int moveStartTime; //0x30 int time; //0x34 int duration; //0x38 float value; //0x3C float sort; //0x40 hudelem_color_t glowColor; //0x44 int fxBirthTime; //0x48 unsigned int flags; //0x4C short targetEntNum; //0x50 short fontScaleTime; //0x52 short fadeTime; //0x54 short label; //0x56 short width; //0x58 short height; //0x5A short fromWidth; //0x5C short fromHeight; //0x5E short scaleTime; //0x60 short moveTime; //0x62 short text; //0x64 unsigned short fxLetterTime; //0x66 unsigned short fxDecayStartTime; //0x68 unsigned short fxDecayDuration; //0x6A unsigned short fxRedactDecayStartTime; //0x6C unsigned short fxRedactDecayDuration; //0x6E char type; //0x70 char font; //0x71 char alignOrg; //0x72 char alignScreen; //0x73 char materialIndex; //0x74 char offscreenMaterialIdx; //0x75 char fromAlignOrg; //0x76 char fromAlignScreen; //0x77 char soundID; //0x78 char ui3dWindow; //0x79 }; struct game_hudelem_s { hudelem_s elem; //0x0 int clientNum; //0x7C int team; //0x80 int archived; //0x84 }; game_hudelem_s*(*HudElem_Alloc)(int clientNum, int teamNum) = (game_hudelem_s*(*)(int, int))0xD84670;  
      #define g_clients ((gclient_s*)0x21A8160) #define g_entities ((gentity_s*)0x1F30160) struct usercmd_s { int time; //0x0 int buttons[3]; //0x4 int viewAngles[3]; //0x10 char _0x1C[0x4]; int weapon; //0x20 char _0x24[0x4]; int offhand; //0x28 char _0x2C[0xC]; char forwardMove; //0x38 char rightMove; //0x39 char _0x3A[0x16]; }; struct PlayerHelpWeapon { int weaponId; //0x0 char _0x4[0x4]; int renderOptions; //0x8 char _0xC[0x10]; float heatPercent; //0x1C char _0x20[0xC]; int flags; //0x2C - & 1 = needs rechamber }; struct gclient_s { //size = 0x17010 char _0x0[0x10]; int pm_flags; //0x10 char _0x14[0x4]; int weapFlags; //0x18 char _0x1C[0x4]; int otherFlags; //0x20 (godmode ^= 1) char _0x24[0xC]; float origin[3]; //0x30 float velocity[3]; //0x3C char _0x48[0x250]; int offHand; //0x298 char _0x29C[0x24]; int weapon; //0x2C0 char _0x2C4[0x48]; int spreadOverride; //0x30C int spreadOverrideState; //0x310 char _0x314[0x4]; float viewAngles[3]; //0x318 char _0x324[0x54]; PlayerHelpWeapon weapons[15]; //0x378 char _0x648[0x4]; int Killstreak1; //0x64C int Killstreak2; //0x650 int Killstreak3; //0x654 int primaryStock; //0x658 int secondaryStock; //0x65C char _0x660[0x34]; int primaryClip; //0x694 int secondaryClip; //0x698 int lethalAmmo; //0x69C int tacticalAmmo; //0x6A0 char _0x6A4[0x84]; int locationSelectionInfo; //0x728 int locationSelectionType; //0x72C char _0x730[0x20]; int sprintDuration; //0x750 char _0x754[0x34]; int eFlags; //0x788 (thermal ^= 0x80000) char _0x78C[0xC]; int eFlags2; //0x798 (cloak ^= 0x100, hologram = 0xFF00) char _0x79C[0x8B]; unsigned char broken; //0x827 (0xFF = on, 0x00 = 0ff) char _0x828[0x6C]; float specialist; //0x894 char _0x898[0x16228]; int sessionState; //0x16AC0 char _0x16AC4[0x8]; int killCamEntity; //0x16ACC int killCamTargetEntity; //0x16AD0 char _0x16AD4[0x18]; int connectedState; //0x16AEC usercmd_s cmd; //0x16AF0 usercmd_s oldcmd; //0x16B40 char _0x16B90[0x3C]; float moveSpeedScale; //0x16BCC char _0x16BD0[0x10]; int team; //0x16BE0 char _0x16BE4[0x20]; char name[0x20]; //0x16C04 char clantag[0x4]; //0x16C24 //this is wrong - it should be 0x16C80 int rank; //0x16C28 int prestige; //0x16C2C char _0x16C30[0x90]; int deaths; //0x16CC0 int points; //0x16CC4 int kills; //0x16CC8 int score; //0x16CCC int headshots; //0x16CD0 int assists; //0x16CD4 char _0x16CD8[0x24]; int clientUIVisibilityFlag; //0x16CFC (0 = no hud, 3 = normal, 7 = uav) char _0x16D00[0xFC]; int frozen; //0x16DFC (^= 4) char _0x16E00[0x4]; int buttons; //0x16E04 int oldbuttons; //0x16E08 int latched_buttons; //0x16E0C int buttonsSinceLastFrame; //0x16E10 char _0x16E14[0x1FC]; }; struct gentity_s { //size = 0x4F0 int entNum; //0x0 char _0x4[0x22C]; float origin[3]; //0x230 float angles[3]; //0x23C char _0x248[0x38]; short model; //0x280 char _0x282[0x6]; short classname; //0x288 char _0x28A[0x1A]; int spawnflags; //0x2A4 char _0x2A8[0x20]; int health; //0x2C8 char _0x2CC[0x224]; };  
      #define level_locals ((level_locals_t*)0x1E9DA30) struct level_locals_t { gclient_s* clients; char _0x8[0x78]; int maxClients; //0x80 char _0x84[0x6470]; int time; //0x64F4 };  
    • By Hydrogen
      Hello everyone,

      I was digging around the other day through GitHub and bumped into this neat programmer named Seth Clydesdale. You can click his name to view his work from GitHub. Recently, he ended up progressing on a long time project that he started a year ago and finally finished it for the community! This is called PS4 Cover Generator. This tool lets you create cover images straight from your PS4 Web Browser. You have every function to use from then once you're done, you can go ahead and screenshot it to your console. This works on any firmware that you can access the web browser.

      You can view his code here or automatically go to his website to make your own cover photo, click here. 


    • By Hydrogen
      Hello everyone,

      Today, an anonymous user has posted download links to the main native emulators Nintendo Entertainment System and SEGA Master System (Proof of Concepts). The emulators are now functional on 4.55. Today, developer Morpheus shared a Pastebin on his Twitter that an anonymous created for the community, thank you for notifying us. 

      Click here to direct to the Pastebin that contains both native emulators.

      Download: NES_EMU_V455.pkg (6.1 MB) / SEGA_EMU_V455 .pkg (6.3 MB)

      Morpheus states, "Well don't expect too much, they are far far away from perfection..." We hope to see more emulators come alive on the PS4, and wondering what will be next. What do you guys think? 
       
       
    • By Matrix
      Hello,

      Today I released by SPRX menu for PS4 Ghosts on 1.00.

      Of course, this isn't really huge news because it is just a port from old gen consoles, but it does give room to show where prx modding will be able to take us on PS4 for cod or any other game. None of this would be possible without Swaqq and Sabotage and the work they put in to get the injector working. If you are looking to make your own menu or want more info on how this works you can visit Swaqq's post here: 
       

      Anyways on to the mods, I have added the needed addresses to Swaqq's tool for injecting on Ghosts 1.00. Here is a download for the SPRX as well as the injector and the NetCat GUI tool for sending payloads to your console:
      Download

      I'm not sure about virus scans since its just an SPRX file and other public tools you can get elsewhere. If one is required just let me know and I'll post one. 

      Happy Modding, 
      Matrix

      Video Tutorial
×

Important Information

By browsing JustGaming you are accepting our Terms of Use & Privacy Policy. You can also view our Guidelines.