Anche se di poco interesse ci sono nuovi sviluppi sul loader di file JAR della console PlayStation 5, ad attivarsi oggi è il developer hammer-83 che ha sviluppato il progetto PlayStation 5 Remote JAR Loader utilizzato come base per lo sviluppo della ISO PS5 JAR Loader.
Questo progetto utilizza le vulnerabilità scoperte nel livello BD-J del firmware 4.51 e versioni precedenti della console PlayStation 5 per distribuire un caricatore in grado di ascoltare i file JAR ed eseguire la loro classe principale.
Ciò semplifica la masterizzazione del disco BD-R con il caricatore solo una volta e quindi l’esecuzione di nuove versioni del codice sperimentale.
Lo sviluppatore ha dettagliato tutte le impostazioni necessarie per creare sia il filesystem del disco BD-R del caricatore che il file JAR da inviare alla console PlayStation 5.
Prerequisiti
- JDK 11 (la console PS5 utilizza il runtime Java 11).
- Apache Maven.
- IntelliJ IDEA Community Edition (facoltativo, ma consigliato).
Struttura
Il progetto comprende le seguenti componenti:
- Root
pom.xml
definisce le proprietà comuni e la configurazione del plugin Maven per tutti i progetti. - il sottoprogetto
assembly
crea la directory che deve essere masterizzata su un disco BD-R. Raccomando il softwareImgBurn
per farlo. Assicurati di utilizzare il filesystem UDF 2.50, quindi trascinare semplicemente il contenuto della directoryassembly/target/assembly-[version]
nell’editor del layout del disco. - Il sottoprogetto
bdj-tools
non ha bisogno di essere toccato. Queste sono le utility di HD Cookbook, adattate per funzionare su JDK 11 e integrate nel processo di compilazione del filesystem del disco BD-R. - Il sottoprogetto
stub
contiene lo script di compilazione per scaricare i file di classe BD-J da HD Cookbook e organizzarli per l’utilizzo con JDK 11 locale. È anche un luogo in cui i file stub specifici per PS5 devono essere dichiarati in modo che possano essere utilizzati nell’Xlet e JAR remoto. - Il sottoprogetto
xlet
contiene il codice dell’Xlet che si avvia quando il disco BD-R viene avviato su PS5. Avvia semplicemente il caricatore JAR (per impostazione predefinita sulla porta 9025). - L’oggetto
xploit
contiene il codice da inviare per l’esecuzione su PS5. Il codice può fare riferimento a classi daxlet
, come la classe Status per l’output sullo schermo. Il progetto produce un JAR che è in grado di autoinviarsi per l’esecuzione.
Configurazione
Le seguenti proprietà in pom.xml possono essere regolate prima di masterizzare il JAR Loader su disco:
loader.port
– Porta su cui il caricatore JAR ascolterà i dati.loader.resolution.width
,loader.resolution.height
– Risoluzione dello schermo da impostare in vari file. Non sono sicuro di come questo influisca su qualcosa, non l’ho sperimentato abbastanza.remote.logger.host
– Indirizzo IP dove far risuonare i messaggi mostrati sullo schermo. Se vuoto, la registrazione remota non verrà utilizzata. Questo host può anche ricevere dati binari, vedere RemoteLogger#sendBytes.remote.logger.port
– Porta su cui il logger remoto invierà i messaggi di stato.remote.logger.timeout
– Numero di millisecondi da attendere prima di abbandonare i tentativi di connessione all’host di registrazione remoto. Se l’host è inattivo dopo questo timeout al primo tentativo di invio, non verranno eseguiti ulteriori tentativi di registrazione remota.
Modificare direttamente il POM o passare i nuovi valori dalla riga di comando, ad esempio: mvn ... -Dloader.port=9025
. Per ascoltare i messaggi remoti, utilizzare socat udp-recv:[remote.logger.port] stdout
.
Utilizzo
- Assicurati che la variabile di ambiente
JAVA_HOME
punti alla root di JDK 11. Aggiungere la directory${JAVA_HOME}/bin
a${PATH}
. - Assicurati inoltre che
MAVEN_HOME
punti alla root dell’installazione di Apache Maven. Aggiungere la directory${MAVEN_HOME}/bin
a${PATH}
. - Esegui
mvn package
dalla root del progetto. Dovrebbe produrre i seguenti artefatti:- La directory
assembly/target/assembly-[version]
contiene tutti i file che devono essere masterizzati sul BD-R. - Il file
xploit/target/xploit-[version].jar
contiene il codice che può essere inviato ripetutamente alla PS5 una volta distribuito il caricatore.
- La directory
- IMPORTANTE: Maven-compiler-plugin presenta un bug che causa un NPE se non viene corretto. L’esecuzione del passaggio #3 probabilmente fallirà alla prima esecuzione. Per risolvere il problema, sostituire il plugin nella repository Maven locale con la versione con patch che si trova in lib. Normalmente la sostituzione va a
${HOME}/.m2/repository/org/apache/maven/plugins/maven-compiler-plugin/3.10.1
. - Masterizzare il supporto BD-R (meglio ancora se BD-RE), quindi inseriscirlo nella console PS5 e avviarlo.
- Un messaggio sullo schermo dovrebbe informare che il caricatore è in attesa del file JAR.
- Inviare il file JAR utilizzando il comando:
java --add-opens java.base/jdk.internal.loader=ALL-UNNAMED -jar xploit/target/xploit-[version].jar <indirizzo ip ps5> [<porta ps5]
. La console PS5 dovrebbe informare a schermo sullo stato del caricamento e dell’esecuzione. - Una volta completata l’esecuzione, il caricatore attenderà un nuovo file JAR. Apportare le modifiche necessarie nel progetto
xploit
, ricompilare utilizzandomvn package
e rieseguire il passaggio #7 per riprovare.
Note
- Per utilizzare con IntelliJ, è sufficiente puntare la finestra di dialogo
File -> Open
alla root del progetto. - Se uno qualsiasi dei POM viene modificato, è necessario eseguire
Maven -> Reload Project
in IntelliJ per sincronizzare i file di progetto. La sincronizzazione del progetto Maven purtroppo modifica .idea/compiler.xml per contenere percorsi di sistema assoluti. Sostituiscili semplicemente con la macro$PROJECT_DIR$
di nuovo. - Il progetto deve essere compilato una volta dalla riga di comando prima di tentare l’apertura in IntelliJ. In questo modo vengono scaricati i JAR bdjstack.
- Il plugin Javadoc è integrato nella build, ma è legato alla fase di verifica in modo che la fase
package
non venga rallentata. Per generare il Javadoc, utilizzaremvn verify
invece dimvn package
. - Se preferisci che Maven non esegua nuovamente la scansione di tutti i sottoprogetti per le modifiche (sono pochi secondi al massimo), utilizzare
mvn install
per inserire tutti gli artefatti nella repository maven locale. Quindi eseguire tutti i comandi delmvn package
dalla directory xploit anziché dalla root del progetto.
Download: Source code PlayStation 5 Remote JAR Loader
Fonte: psxhax.com