Archive of https://github.com/ItsJokerZz/ps5-elfldr — An ELF loader for jailbroken PS5s that accepts payloads on port 9021 https://github.com/ItsJokerZz/ps5-elfldr
  • C 95.2%
  • Makefile 3.5%
  • Shell 1.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
ItsJokerZz 738edccd45 Validate ELF headers, fail on heap setup errors, add tracked launches
Bounds-check ELF headers read from the socket and stop the spawn when
the libc heap setup fails. Add an optional TRACKED request that
replies with the pid of the spawned payload.
2026-10-11 06:10:24 -04:00
.github/workflows cosmetics 2025-08-15 01:19:56 +02:00
stress-test cosmetics 2025-06-03 12:43:59 +02:00
.gitignore lots of cosmetics, and some stabillity improvements 2024-02-20 21:19:42 +01:00
asset.h cosmetics 2026-08-29 15:17:25 +02:00
bootstrap.c cosmetics 2026-08-29 14:42:20 +02:00
elfldr.c Validate ELF headers, fail on heap setup errors, add tracked launches 2026-10-11 06:10:24 -04:00
elfldr.h cosmetics 2026-08-29 14:42:20 +02:00
LICENSE Initial commit 2023-09-13 20:09:29 +02:00
log.h improve logging 2025-06-01 10:56:10 +02:00
main.c cosmetics 2026-08-29 14:42:20 +02:00
Makefile cosmetics 2026-08-29 14:42:20 +02:00
notify.c notify user on the various deployment steps 2024-10-29 17:41:44 +01:00
notify.h notify user on the various deployment steps 2024-10-29 17:41:44 +01:00
pt.c cosmetics 2025-06-03 14:12:26 +02:00
pt.h cosmetics 2025-06-03 14:12:26 +02:00
README.md readme: add example on how to deploy payloads using curl (http protocol) 2026-08-22 14:05:20 +02:00
selfldr.c add support for payload arguments when deployed as an URI 2026-02-13 18:54:46 +01:00
selfldr.h add support for payload arguments when deployed as an URI 2026-02-13 18:54:46 +01:00
socksrv.c Validate ELF headers, fail on heap setup errors, add tracked launches 2026-10-11 06:10:24 -04:00
uri.c uri_get_filename: sanity check uri 2026-09-13 19:02:32 +02:00
uri.h add support for payload arguments when deployed as an URI 2026-02-13 18:54:46 +01:00

ps5-payload-elfldr

This is an ELF loader for PS5 systems that have been jailbroken using either the BD-J ps5-payload-loader, or the webkit approached from Specter. Unlike the ELF loaders bundled with those exploits, this one uses the ptrace syscall to bootstrap itself into the SceRedisServer process, and then launches itself into a new process that keeps running in the background, even when playing games. Furthermore, this ELF loader will also resume its execution when the PS5 returns from rest mode. Since payloads are executed in induvidual processes, this ELF loader keeps on running even if a payload crashes.

Quick-start

To deploy ps5-payload-elfldr, first launch a kernel exploit that provides a rudimentary ELF loader on port 9020, e.g., BD-J ps5-payload-loader, or the webkit approached from Specter. Then, run the following:

john@localhost:~$ export PS5_HOST=ps5
john@localhost:~$ export PS5_PORT=9020
john@localhost:~$ wget -q -O - https://github.com/ps5-payload-dev/elfldr/releases/latest/download/elfldr-ps5.elf | nc -q0 $PS5_HOST $PS5_PORT

Usage examples

john@localhost:~$ export PS5_HOST=ps5
john@localhost:~$ export PS5_PORT=9021
john@localhost:~$ export PS5_PAYLOAD=payload.elf # from local storage
john@localhost:~$ nc -q0 $PS5_HOST $PS5_PORT < $PS5_PAYLOAD
john@localhost:~$
john@localhost:~$ export PS5_PAYLOAD=file:/data/payload.elf # from console storage
john@localhost:~$ echo "$PS5_PAYLOAD" | nc -q0 $PS5_HOST $PS5_PORT
john@localhost:~$
john@localhost:~$ export PS5_PAYLOAD=https://github.com/ps5-payload-dev/ftpsrv/releases/latest/download/ftpsrv-ps5.elf
john@localhost:~$ echo "$PS5_PAYLOAD" | nc -q0 $PS5_HOST $PS5_PORT
john@localhost:~$
john@localhost:~$ export PS5_PAYLOAD=https://github.com/ps5-payload-dev/ftpsrv/releases/latest/download/ftpsrv-ps5.elf
john@localhost:~$ curl "http://$PS5_HOST:$PS5_PORT?uri=$PS5_PAYLOAD"

Building

Assuming you have the ps5-payload-sdk installed on a Debian-flavored operating system, ps5-payload-elfldr can be compiled using the following set of commands:

john@localhost:ps5-payload-elfldr$ sudo apt-get install xxd
john@localhost:ps5-payload-elfldr$ export PS5_PAYLOAD_SDK=/opt/ps5-payload-sdk
john@localhost:ps5-payload-elfldr$ make

Reporting Bugs

If you encounter problems with ps5-payload-elfldr, please file a github issue. If you plan on sending pull requests which affect more than a few lines of code, please file an issue before you start to work on you changes. This will allow us to discuss the solution properly before you commit time and effort.

License

ps5-payload-elfldr is licensed under the GPLv3+.