P2jb-y2jb-porting

matem6 matem6
Dépôt créer le : 21/05/2026
Forks: 28 Watcher: 0 271
Choisir une liste...
FR

voir la note de bas de page

PlayStation 5 jailbreak (firmware 9.00 – 12.40)— un port de Gezine / cheburek3000's p2jbexploitation du noyau (cr ref) débordement viakqueueex) de l'hôte de luac0re (chargeur de lua) à Y2JB(YouTube / V8 host JavaScript).

Travail confirmé : jailbreak de bout en bout + menu de débogage GPU-DMA + ELF chargeur (livré automatiquement par l'hôte Y2JB) + persistant livraison déballée. Fermeture de l'application hôte YouTube après achèvement non la console.

Soutien au firmware :travaux sur9,00 – 12,40.

Comment ça marche

La charge utile déclenche un 32 bitscr_refdébordement dans le noyau PS5 (via environ 232)kqueueexsyscalls, ~50 minutes), utilise le résultat utilisation-après-libre pour construire un noyau lecture/écriture primitive, processus hôte à root, permet le menu Paramètres de débogage via GPU DMA écrit sur le noyau en lecture seule.datasegment, puis livre un Chargeur ELF dans le processus YouTube. Le binaire et la livraison le mécanisme dépend de la version Y2JB installée (voir PS5 setup (Y2JB)ci-dessous). Dans les deux cas, le chargeur finit par écouter sur TCP:9021pour les ELF prison cassée PS5.

Exigences

Configuration PS5 (Y2JB)

Cette charge utile tourneintérieurle cadre d'utilisation de Y2JB sur la PS5 (l'application YouTube TV a bougé pour exécuter le JavaScript arbitraire). Avant vous peut envoyer n'importe quoi à la console, vous devez restaurer l'Y2JB de Gezine sauvegarde système sur la PS5 — voirGezine/Y2JBpour le fichier de sauvegarde et la procédure de restauration. Sans Y2JB restauré et l'application YouTube TV lancé, la PS5 n'a pas d'auditeur pour la charge utile et rien ne se passera.

Y2JB 1.3 ou plus récent.Le chargeur ELF est livré différemment selon la version Y2JB. La charge utile détecte le cadre version à l'exécution (à partir de Y2JBversion_stringmondial) et les sélections le chemin correspondant automatiquement — vous n'avez pas besoin de configurer n'importe quoi.

  • Y2JB 1,5+: la charge utile s'en va vers Y2JBkexpcode shell (load_aioshellcode), qui charge elfldr-ps5-0.23.elfde l'intérieur du cadre. Pas de USB, rien à fournir.
  • Y2JB 1,4: la charge utile litelfldr_1320_v5.elfdirectement de la fente de bac à sable Y2JB — pas d'USB nécessaire.
  • Y2JB 1,3: Y2JB 1.3 regroupe un obsolèteelfldr.elfc'est vrai. ne pas travailler sur les noyaux actuels, donc la charge utile lit elfldr_1320.elfd'une clé USB branchée dans le PS5 (/mnt/usb0.../mnt/usb7). Prenezelfldr_1320_v5.elfde ce repo, mettre sur la racine d'un FAT32/exFAT USB (vous pouvez le renommer àelfldr_1320.elfouelfldr.elfsi vous préférez — les trois sont sond), et brancher l'USBavantlancer la charge utile.

Au tout début la charge utile vérifie les aides-cadres dont elle a besoin sont dans la portée: si quelque chose manque, il avorte avant de toucher le amande (pas de fuite, pas de phase 0).

Matériel

  • PlayStation 5 console exécutant le firmware9,00 – 12,40.
  • Un PC sur le même LAN que le PS5.
  • (Y2JB 1.3 seulement)A FAT32/exFAT Clé USB avecelfldr_1320.elfsur sa racine. Sur Y2JB 1.4+ aucun USB n'est nécessaire.

Logiciel (sur PC)

  • Lespayload_sender.pyoutil de livraison de Gezine/Y2JB(non inclus ici).
  • Al-Azif/hermes-link(ou outil équivalent) pour la livraison des ELF au chargeur sur:9021.

Fichiers

  • p2jb.js— la charge utile de la prisonbreak (cette repo).
  • elfldr_1320_v5.elf— Le binaire de chargeur ELF de Gezine, inclus ici pour les utilisateurs Y2JB 1.3 qui doivent le fournir via USB. Y2JB 1.4 faisceaux le même fichier à l'intérieur du framework; Y2JB 1.5+ expédie ses propres paquets elfldr-ps5-0.23.elfà la place. Dans ces deux cas, vous pouvez ignorez ce fichier.

Utilisation

1. Envoyer la charge utile

Depuis le PC:

python payload_sender.py <ps5-ip> p2jb.js

La charge utile renvoie son journal àpayload_sender.pyla console.

2. Attendez environ 50 minutes

La fuite de cr ref domine l'exécution. L'expéditeur de charge utile restera silence pour toute la fuite — aucun progrès par pourcentage n'est imprimé. Ne présumez pas qu'il s'est écrasé; le travailleur est vérifié en interne pour la vivacité et un décrochageFATALligne de log. Ne pas interagir avec le PS5 pendant qu'il fonctionne.

3. Rechercher l'achèvement

[p2jb] stage_elfldr: elfldr launched - listening on :9021
[p2jb] === p2jb complete ===

À ce stade, vous avez un jailbreak en mémoire et un chargeur ELF générique. Tout ELF que vous envoyez à:9021va courir sur la prison cassée PS5.

Envoyer un ELF à:9021

Un outil pratique pour la livraison des ELF au chargeur est Al-Azif/hermes-link. Il faut soin de la poignée de main TCP que le chargeur attend, donc vous n'avez pas à écrire le protocole d'octet vous-même.

Tuning: vitesse de fuite vs stabilité

Lescr_reffuite s'écoule sur plusieurs fils de travail épinglés dans parallèle. Par défaut :4 carottes(cores 0–3; cœur 4 reste libre pour l'orchestreur):

// p2jb.js
const LEAK_CORES = [0, 1, 2, 3];   // ~48 min, default

Sur le matériel qui est instable à 4 cœurs (manque du noyau pendant la fuite phase, ou cours qui n'atteignent jamaisStage 0), chute à moins de carottes — moins de travailleurs parallèles moins de contestation sur le noyaukqueueexallocator et un plus de chances de compléter.

AutresLEAK_COREStemps du mur remarques - oui. autres[0, 1, 2, 3]~50 min par défaut — plus rapide, moins stable autres[0, 1, 2]trois points (un peu plus stable) autres[0, 1]~1h 30 min autres[0]~2h=1-core — lent, le plus stable=

Pour le changer : ouvrirp2jb.js, rechercherLEAK_CORES, éditer le tableau, enregistrer le fichier, et exécuterpayload_sender.pycomme d'habitude. Essayez la valeur par défaut d'abord; ne retombez à moins de cœurs si vous voyez des paniques du noyau pendant la fuite ouStage 0n'apparaît pas après bien plus d'une heure.

Limites connues

  • Une course par botte.Ap2jb.faille marqueur est tombé à l'entrée de l'étape 0 refuser les ré-exécutions sans redémarrage — le triple-libre est un point de pas de retour.
  • Le chargeur ELF vit dans le processus YouTube.Clôture app est sûr pour le noyau, mais il déchire le chargeur et n'importe quel Vous avez envoyé à:9021. Gardez YouTube ouvert jusqu'à ce que votre persistante charge utile (par exemple.BD-UN-JB) a appliqué; vous pouvez ensuite fermer l'application normalement.

Note de l ' auteur

Je ne travaille pas normalement sur les exploits PS5 ou l'ingénierie inverse de bas niveau. Ce dépôt est le résultat d'une tentative personnelle de comprendre comment les techniques de la scène fonctionnent — pas une contribution d'un développeur de scène. Je le publie au cas où il serait utile à quelqu'un sur le firmware 11.60 qui est coincé, mais s'il vous plaît ne le lisez pas comme je revendique l'expertise sur le sujet. Le vrai travail est par les gens crédités ci-dessous; je viens d'essayer de coller leurs primitives dans un flux de travail sur l'hôte Y2JB et apprendre En chemin.

Crédits

  • p2jbexploitation du noyau (cr ref débordement viakqueueex)— Gezine / cheburek3000. .Luac0re.
  • exploitation du noyau netcontrol (original)— Le Flow. Source de la fuite de kqueue et les primitifs UIO/IOV R/W réutilisés ici.
  • Cadre Y2JB userland— Gezine. .Y2JB.
  • kexpcode shell post-jailbreak tout-en-un— ufm42 (kexp), fusionné en Y2JB 1.4.
  • remote_lua_loaderport p2jb— pas maj0r. Utilisé comme référence secondaire pendant le port.
  • (Y2JB)— référencés pour legpu.jsdebug-menu s'applique écoulement; pas l'exploitation elle-même (laque exploite AIO, paskqueueex).
  • Édigax— aider à la mise en œuvre de fuites multicœur, descr_reffuite vers le bas de ~2 heures à ~48 minutes.
  • RvijuetDr Yenyen— aider à exécuter les essais en s'appuyant sur des données réelles matériel lors de l'enquête de fermeture du KP.
  • Claude (anthropique)— Assistant AI utilisé dans tout le port.

Licence

MIT — voirLICENSE.

Contributeurs GitHub

matem6
matem6
20 contributions