explaingit

matem6/yarp2jb

24PythonAudience · developerComplexity · 4/5Setup · hard

TLDR

A PS5 jailbreak tool that combines two exploits to gain root-level kernel access on firmware 9.00, 12.70. Takes 45, 52 minutes to run, requires a specific commercial game and a PC on the same network, and must be re-run after every reboot.

Mindmap

mindmap
  root((yarp2jb))
    What it does
      PS5 jailbreak
      Root kernel access
      Debug menu unlock
    How it works
      Game save exploit
      Network payload delivery
      Integer overflow trigger
      Kernel memory patch
    Requirements
      PS5 firmware 9 to 12.70
      Arcade Spirits game
      PC on local network
    Limitations
      45 to 52 minute runtime
      Not permanent
      Rerun after every reboot
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Gain root-level access to a PS5 console running firmware 9.00 to 12.70 to run unsigned software or explore the system.

USE CASE 2

Use as a technical reference for how kernel integer-overflow exploits and userland-to-kernel privilege escalation chains work on embedded systems.

Tech stack

Python

Getting it running

Difficulty · hard Time to first run · 1h+

Requires a PS5 with Arcade Spirits: The New Challengers installed on firmware 9.00, 12.70, plus a PC on the same home network running Python and netcat.

No license information is mentioned in the explanation.

In plain English

This project is a PlayStation 5 jailbreak tool that works on consoles running firmware versions 9.00 through 12.70. It combines two existing exploits: a kernel-level vulnerability called p2jb (originally found by Gezine) and a userland exploit called yarpe (by Helloyunho) that runs inside a specific commercial game, Arcade Spirits: The New Challengers. The end result is a way to gain elevated, root-level access to the PS5's operating system. The technical path goes like this: the game's save file is replaced with a specially crafted exploit save. When the game loads that save, it triggers yarpe, which listens over the local network for a Python script. You send the included payload script (p2jb.py) to the console over a TCP connection. That script then forces the PS5 kernel into a known broken state by calling a system function roughly 4 billion times, causing an integer overflow. From that broken state, the code builds the ability to read and write arbitrary kernel memory, escalates the game process to root, and patches a normally read-only section of the kernel to unlock the console's hidden debug menu. A small loader program (elfldr-ps5.elf) is then placed into memory and starts listening for additional software to run. The process takes 45 to 52 minutes depending on which version of the game is installed (PS5 native edition or PS4 edition played under backward compatibility). During that time the screen shows progress stages numbered 0 through 9. If it fails at any point, reloading the save and re-sending the payload restarts the attempt. The jailbreak is not permanent across reboots, it needs to be re-run each time the console starts fresh. To use this, you need a PS5 with the game installed, a PC on the same home network, and a basic command-line tool (such as nc, the standard netcat utility) to send files over TCP. The release includes the exploit save file and the ELF loader so no building from source is required for the setup steps.

Copy-paste prompts

Prompt 1
Walk me through the full matem6/yarp2jb process step by step: how to replace the game save, how to send the payload over TCP, and what the progress stages mean during the 45-minute run.
Prompt 2
Explain the technical chain in yarp2jb: how does yarpe trigger from a modified game save, and how does p2jb use the integer overflow to break into kernel memory?
Prompt 3
What does the elfldr-ps5.elf loader do after yarp2jb completes, and how do I send additional ELF payloads to the console once it's listening?
Open on GitHub → Explain another repo

← matem6 on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.