explaingit

matem6/p2jb-y2jb-porting

75JavaScriptAudience · researcherComplexity · 5/5ActiveLicenseSetup · hard

TLDR

Port of a PS5 kernel jailbreak payload to the Y2JB JavaScript host running inside the YouTube TV app, targeting firmware 11.60 with a ~2 hour leak window.

Mindmap

mindmap
  root((P2JB-Y2JB-Porting))
    Inputs
      Y2JB system backup
      USB stick FAT32
      elfldr binary
    Outputs
      Root host process
      Debug menu
      TCP port 9021 listener
    Use Cases
      Run homebrew on PS5 11.60
      Send payloads from PC
      Persist with BD UN JB
    Tech Stack
      JavaScript
      Python sender
      kqueueex syscall
      ELF loader

Things people build with this

USE CASE 1

Jailbreak a PS5 on firmware 11.60 from inside the YouTube TV app

USE CASE 2

Open TCP port 9021 on a PS5 to receive further homebrew ELF payloads

USE CASE 3

Study a real world JavaScript port of a Lua based kernel exploit chain

Tech stack

JavaScriptPythonELFPS5

Getting it running

Difficulty · hard Time to first run · 1day+

Requires a PS5 on firmware 11.60 with a restored Y2JB backup, a FAT32 USB, and a ~2 hour untouched leak run that allows only one attempt per boot.

MIT license: free to use, modify, and redistribute with attribution and no warranty.

In plain English

This repository is a port of a PlayStation 5 jailbreak payload, originally written by Gezine and cheburek3000 for a Lua based host, to a different host called Y2JB that runs JavaScript inside the PS5's YouTube TV app. The README states it has been tested on PS5 firmware 11.60, and that the bundled offset table covers firmwares 9.00 through 12.40, though only 11.60 has been confirmed on real hardware. The author labels the project work in progress and says the in memory jailbreak completes reliably, but closing the YouTube host app afterwards currently triggers a kernel panic on the console. The README explains the mechanism in plain terms. A worker repeatedly calls a syscall named kqueueex, which after about two hours overflows a 32 bit reference counter in the PS5 kernel. The resulting use after free is turned into a kernel read and write primitive, which is then used to give the host process root, enable the debug menu, and load a separate program called elfldr_1320 from a USB drive. That program listens on TCP port 9021 so other binaries can be sent to the running console. Usage is laid out as a sequence. You first need to restore Gezine's Y2JB system backup on the PS5, which is documented in a separate repository. You copy elfldr_1320.elf to a FAT32 or exFAT USB stick, plug it into the PS5, open the YouTube app, wait at least sixty seconds for the host to quiet down, then send the payload from a PC using a Python tool called payload_sender.py. The payload logs back to the PC. An early pre flight check reports a number, and if it is over a threshold the run aborts cleanly without touching the kernel, so no reboot is needed before retrying. The README is candid about constraints. The long leak runs silent for about two hours and the PS5 must not be touched. Only one attempt is allowed per boot, because a marker file is dropped at stage zero to refuse a second run. The YouTube app must stay open until any persistent payload has been delivered, and the author strongly recommends sending a follow up unpatcher called BD UN JB to port 9021 right after completion so the jailbreak survives a kernel panic on app close. The author notes that they do not normally do PS5 exploit work and that the project is a personal learning attempt that glues other people's primitives onto the Y2JB host. Credits go to Gezine and cheburek3000 for the kernel exploit, to Gezine for the Y2JB framework and the ELF loader binary, and to a few reference projects used during the port. The license is MIT.

Copy-paste prompts

Prompt 1
Walk me through running P2JB-Y2JB-Porting against a PS5 on 11.60 and explain what payload_sender.py is doing at each step
Prompt 2
Adapt the offset table in P2JB-Y2JB-Porting for PS5 firmware 12.02 and explain which structs the offsets reference
Prompt 3
Wrap payload_sender.py in a small Tauri GUI that picks the ELF and target IP and shows the log stream
Prompt 4
Explain the kqueueex refcount overflow path used by P2JB-Y2JB-Porting in plain terms
Open on GitHub → Explain another repo

Generated 2026-05-22 · Model: sonnet-4-6 · Verify against the repo before relying on details.