P2jb-y2jb-porting
PlayStation 5 jailbreak (firmware 9.00 – 12.40) — un port de Gezine / cheburek3000's exploitation du noyau p2jb (cr ref débordement via kqueueex) de l'hôte...
Choisir une liste...
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 Y2JB
kexpcode shell (load_aioshellcode), qui chargeelfldr-ps5-0.23.elfde l'intérieur du cadre. Pas de USB, rien à fournir. - Y2JB 1,4: la charge utile lit
elfldr_1320_v5.elfdirectement de la fente de bac à sable Y2JB — pas d'USB nécessaire. - Y2JB 1,3: Y2JB 1.3 regroupe un obsolète
elfldr.elfc'est vrai. ne pas travailler sur les noyaux actuels, donc la charge utile litelfldr_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 avec
elfldr_1320.elfsur sa racine. Sur Y2JB 1.4+ aucun USB n'est nécessaire.
Logiciel (sur PC)
- Les
payload_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 paquetselfldr-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.A
p2jb.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 le
gpu.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,
des
cr_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.