Compare commits

...
2 Commits
Author SHA1 Message Date
BestPig ebac9ffd79 Add support for 6.xx 2026-01-22 01:19:21 +01:00
Echo Stretch 8649785cfa Added Notify (#1)
* Added Notify
2026-01-19 20:07:38 +01:00
15 changed files with 39 additions and 2 deletions

No files matched your search

+10 -2
View File
@@ -32,6 +32,8 @@ Original concept and some code by idlesauce
## Usage
> Note: To boot a game, you must downgrade its `eboot.bin` and every `prx`/`sprx` using this tool [ps5_elf_sdk_downgrade.py](https://gist.github.com/idlesauce/2ded24b7b5ff296f21792a8202542aaa); without this, the system will refuse to launch the title.
1. Place your replacement libraries in a `fakelib` folder inside the game's installation directory (`PPSSAXXXXX/fakelib/`)
2. Run the `backpork.elf` payload on your PS5
3. Launch your game - the fakelibs will be automatically mounted
@@ -49,6 +51,8 @@ It is recommended to sideload as few libraries as possible, as there is no guara
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.
> Warning: Patches are split by firmware. I recommend using the highest patch set that matches your firmware instead of using lower versions because I had to alter the normal behavior of some functions to make it work.
To apply a patch:
1. The library to patch must be decrypted (ELF format, not SELF)
2. Use an online patcher like [RomPatcher.js](https://www.marcrobledo.com/RomPatcher.js/)
@@ -68,5 +72,9 @@ This project is provided for educational and research purposes.
## Credits
- [idlesauce](https://github.com/idlesauce/) For the idea, code and support
- [john-tornblom](https://github.com/john-tornblom) For the SDK
- [idlesauce](https://github.com/idlesauce/) for the idea, code and support
- [john-tornblom](https://github.com/john-tornblom) for the SDK
- [EchoStretch](https://github.com/EchoStretch/) for endlessly testing my stupid, broken patches!
- kira for helping me figure out some patches (also known as my useful notepad)
- SlimGary for being there every day, for years.
- [Hakim](https://x.com/Hakim9919271/status/2013605108848718219) for the love of **pork** 🐷😍
+21
View File
@@ -4,6 +4,7 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <stdarg.h>
#include <sys/mount.h>
#include <sys/stat.h>
@@ -17,6 +18,11 @@
#define PAYLOAD_NAME "backpork.elf"
typedef struct notify_request {
char unused[45];
char message[3075];
} notify_request_t;
typedef struct app_info {
uint32_t app_id;
uint64_t unknown1;
@@ -24,8 +30,18 @@ typedef struct app_info {
char unknown2[0x3c];
} app_info_t;
extern int sceKernelSendNotificationRequest(int, notify_request_t*, size_t, int);
extern int sceKernelGetAppInfo(pid_t pid, app_info_t *info);
static void notify(const char* fmt, ...) {
notify_request_t req = {};
va_list args;
va_start(args, fmt);
vsnprintf(req.message, sizeof(req.message) - 1, fmt, args);
va_end(args);
sceKernelSendNotificationRequest(0, &req, sizeof(req), 0);
}
// from john-tornblom
static pid_t find_pid(const char *name) {
int mib[4] = {1, 14, 8, 0};
@@ -271,6 +287,7 @@ static void cleanup_game(pid_t pid, const char *sandbox_id, char *fake_mount_pat
snprintf(sandbox_dir, sizeof(sandbox_dir), "/mnt/sandbox/%s", sandbox_id);
printf("[INFO] Removing directory %s\n", sandbox_dir);
if (cleanup_directory(sandbox_dir) == 0) {
notify("Directory removed successfully.");
printf("[INFO] Directory removed successfully\n");
} else {
printf("[WARNING] Failed to remove directory: %s\n", strerror(errno));
@@ -307,6 +324,7 @@ static void patch_game(pid_t child_pid, const char *title_id) {
return;
}
notify("Detected game %s. Patching...", title_id);
printf("[INFO] Detected game %s (pid %d) in sandbox %s. Patching...\n", title_id, child_pid, sandbox_id);
char src_path[PATH_MAX];
@@ -315,6 +333,7 @@ static void patch_game(pid_t child_pid, const char *title_id) {
char* fake_mount_path = mount_fakelibs(sandbox_id, src_path, child_pid, random_folder);
if (fake_mount_path) {
notify("Patch successful. Waiting for game to exit...");
printf("[INFO] Patch successful. Waiting for game to exit...\n");
wait_for_pid_exit(child_pid);
cleanup_game(child_pid, sandbox_id, fake_mount_path);
@@ -358,6 +377,7 @@ int main() {
return -1;
}
notify("Welcome To BackPork 0.1 By BestPig 🐷");
printf("[INFO] Monitoring SceSysCore.elf (pid %d) for game launches...\n", syscore_pid);
pid_t child_pid = -1;
@@ -401,3 +421,4 @@ int main() {
close(kq);
return 0;
}
+7
View File
@@ -0,0 +1,7 @@
# 6.xx Notes
Some games needs an extra patch on `sce_module/libc.prx` to work.
```bash
perl -0777 -i -pe 's/4h6F1LLbTiw#A#B/IWIBBdTHit4#A#B/g' sce_module/libc.prx
```
Binary file not shown.
+1
View File
@@ -0,0 +1 @@
BPS1O‰O‰€|~–ž(“œž‘œž‘œž‘œž‘œž‘œž‘œ£@ŠØž‘£ÓÞO'…šN†¿�ß¡?€¡‰žAž\�¿À€� Œ�gŠÿ¡tƒ�¢!ÐtþÇ,}†4œ�Â|Ï\€P¹÷Cn@Vñî`
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.