Disponibile un nuovo aggiornamento per la toolchain OpenOrbis, la raccolta di strumenti open source dedicato allo sviluppo di applicazioni homebrew su console PlayStation 4 e PlayStation 4 Pro jailbroken.
Questa nuova versione aggiunge il supporto per MacOS (grazie a @lord_friky
) e affronta diverse correzioni per la creazione di alcune librerie (grazie a @3226_2143
).
Toolchain v0.2 has now released, includes MacOS support (thanks to @lord_friky) and fixes for building libraries and many other bug fixes (thanks to @3226_2143). Release details has full patch notes.https://t.co/YWD0a3oJXU
— Specter (@SpecterDev) May 16, 2020
[stextbox id=’info’]Nota: Per il momento, tutti i file della soluzione di Visual Studio sono considerati VS2017. Questo cambierà quando cadranno i progetti basati su core .NET, che sarà VS2019 per consentire l’utilizzo di .NET core 3.1.[/stextbox]
Note
I seguenti progetti verranno aggiunti all’interno della repository ufficiale entro i prossimi giorni:
- Debugger
- MiraLib
Documentazione
Ogni strumento avrà un file README.md
aggiuntivo all’interno della sottodirectory che fornisce informazioni più specifiche su quel progetto. La sottodirectory docs
contiene anche materiali e documentazione aggiuntivi. Di seguito una panoramica dello scopo di ciascuna sottodirectory:
Directory | Contenuti |
/bin | File eseguibili per strumenti su ogni piattaforma (Windows in /bin/windows e Linux in /bin/linux ). |
/docs | Documentazione per le specifiche del formato PS4 (reverse engineering) e la toolchain stessa. |
/extra | File extra e varie. Attualmente, questo include modelli di progetto per Visual Studio. |
/include | Contiene i file di intestazione da compilare quando si creano applicazioni/librerie (i file specifici di PS4 sono in /include/orbis . |
/lib | Contiene gli stub della libreria a cui collegarsi durante la creazione di applicazioni/librerie. |
/samples | Programmi di esempio per iniziare e per riferimento. |
/scripts | Script utili per visualizzare le informazioni Orbis ELF (OELF) e altri strumenti. |
/src | Contiene il codice sorgente per gli strumenti (vedere /src/README.md per ulteriori informazioni su questa directory). |
Setup e installazione
La toolchain clang e il linker llvm (lld) sono necessari per compilare e collegare utilizzando questo SDK. Per Windows, questi possono essere scaricati utilizzando i file binari predefiniti forniti da LLVM. Per Linux e macOS, la stessa pagina contiene file binari predefiniti, tuttavia è anche possibile usare i seguenti comandi (Debian/Ubuntu):
sudo apt-get update
sudo apt-get install clang
sudo apt-get install lld
In futuro, potremmo includere binari predefiniti per clang/lld, tuttavia per il momento è necessario installarli separatamente, è inoltre necessario impostare la variabile di ambiente OO_PS4_TOOLCHAIN
.
Su Windows, questo può essere fatto utilizzando il pannello di controllo delle variabili d’ambiente. Su Linux, il seguente comando può essere aggiunto a ~/.bashrc
(Debian/Ubuntu):
export OO_PS4_TOOLCHAIN=[directory di installazione]
Ciò è necessario affinché gli script di compilazione e lo strumento di conversione sappiano dove cercare determinati file. Si consiglia inoltre di aggiungere la directory root SDK + /bin
alla variabile del percorso.
Windows Installer
Per PC Windows, viene fornito un programma di installazione tramite script Nullsoft, che automatizzerà il processo di estrazione dei file della toolchain e l’impostazione della variabile di ambiente OO_PS4_TOOLCHAIN
.
Linux
Per Linux, dopo aver installato le dipendenze richieste e aver impostato la variabile d’ambiente come indicato sopra, ti consigliamo di eseguire lo script setup-toolchain.sh
in /extra
. Ciò contrassegnerà tutti i file binari di Linux come eseguibili, poiché per impostazione predefinita sono in lettura/scrittura.
Creazione di progetti homebrew
Per Windows, /extra
fornisce modelli di Visual Studio che possono essere aggiunti nella directory dei modelli dell’installazione VS per consentire una facile creazione di progetti homebrew, è inoltre possibile copiare e modificare le soluzioni dagli esempi forniti.
Per Linux, /extra
contiene uno script setup-project.sh
che creerà una directory di progetto basata sull’esempio hello_world
.
Strumenti
Ogni strumento avrà un file README.md
dedicato con informazioni più specifiche sullo strumento. Di seguito viene elencata una panoramica generica degli strumenti inclusi attualmente nella toolchain.
create-eboot
Lo strumento create-eboot
prende i normali file ELF (Executable Linkable Format) ed esegue le patch e il ricollegamento necessari per creare un ELF (OELF) Orbis.
Prenderà ulteriormente questo OELF e lo trasformerà in Signed Executable Linkable Format (SELF). Ciò è stato reso possibile grazie al precedente lavoro di flatz sullo script make-fself.py
, che può essere trovato in /scripts
. Per ulteriori informazioni su questi formati, consultare il wiki o /docs
.
Autore: Specter + flatz (fself stuff)
create-lib
Lo strumento create-lib
è simile allo strumento create-eboot
, tuttavia produce file della libreria Playstation Relocatable eXecutable (PRX) da un determinato file ELF.
Autore: Specter + flatz (fself stuff)
create-pkg
Lo strumento create-pkg
prende una serie di file che le applicazioni dovrebbero avere (eboot.bin
, param.sfo
, moduli necessari, ecc..) e crea un file di pacchetto (pkg) che può essere installato su PS4.
Autore: maxton
stub-generator
Il generatore di stub genera i file header e i file delle librerie condivise (.so
) per il collegamento con le librerie di sistema PS4. L’output di questo strumento è disponibile in /include/orbis
e in /lib
. Queste directory sono essenziali per collegarsi correttamente con le librerie PS4.
Autore: CrazyVoid
miralib
La libreria miralib
contiene codice C# e Python per interagire con Mira sul lato desktop delle cose. Ciò include la gestione di un elenco locale di console, la connessione a una console e l’esecuzione di varie azioni una volta connesse tramite RPC.
Autore: Specter + Kiwi
assistant
Assistant è in realtà una suite di strumenti per aiutare nello sviluppo di homebrew per PS4. Ciò include un visualizzatore di registri, un debugger, un launcher per Mira e un’applicazione della barra delle applicazioni per avviarli facilmente.
Autore: Specter
readelf replacement
Questo è uno strumento sostitutivo per la lettura di file ELF compatibili con PS4, altrimenti noto come ELF Orbis (OELF).
Autore: Specter
Script
Tutti gli script presenti nella directory /scripts
sono script Python 3, specifici per Python 3.7.0, ad eccezione di /scripts/make_fself.py
. Avrai bisogno di Python installato sul tuo sistema per eseguire questi script. L’uso di questi script è disponibile in /scripts/README.md
.
autobuild.py
– è uno script per la generazione automatica di file pkg basato sul contenuto della directory del progetto (potrebbe essere instabile, attendere la compilazione del rilascio).
dynamic_entries.py
– Questo script ottiene un elenco di voci dinamiche dalla tabella dinamica degli ELF Orbis.
make_fself.py
– Copia dello script flatz’ per generare file SELF falsi. Questa funzionalità è stata ora integrata come parte di create-eboot
e create-lib
.
program_headers.py
– Ottiene un elenco di intestazioni del programma dalla tabella delle intestazioni del programma degli ELF Orbis.
rela_entries.py
– Ottiene un elenco di voci di trasferimento con aggiunta (RELA) dalla tabella di trasferimento degli ELF Orbis.
symbol_entries.py
– ottiene un elenco di simboli dalla tabella dei simboli degli ELF Orbis.
Changelog
- Aggiunto supporto macOS (grazie Lord Friky).
- Aggiunte fonti dei file di pacchetto per i campioni e per facilitare la distribuzione dei campioni e per dimostrare meglio come dovrebbero essere costruiti i pacchetti.
- Corretto il problema per cui
create-lib
non esportava correttamente i NID e quindi la risoluzione dinamica non riusciva (grazie a IDC). - Corretto il problema per cui occasionalmente create-eboot/create-lib calcolava una dimensione errata del programma dati a causa della mancata contabilizzazione della dimensione della sezione
.sce_proc_param
(grazie IDC). - Corretto il problema per cui occasionalmente create-eboot/create-lib calcolava una dimensione errata della tabella delle stringhe a causa di una disattivazione da parte di un bug logico relativo al riempimento della sezione (grazie IDC).
- Corretto il problema per cui le librerie non avrebbero avuto la loro tabella Global Offset Table (GOT) / tabella Procedure Linkage Table (PLT) allineata se non fosse presente alcuna sezione
.data.rel.ro
(grazie IDC). - Aggiunto uno script di build per create-eboot/create-lib per Windows (grazie IDC).
- Corretto il problema per cui la correzione
__GNUC__
veniva applicata anche se era già stata definita, causando il reclamo del compilatore se lo si era definito manualmente tramite flag del compilatore (grazie IDC). - Aggiunta la directory
include/x86
per i sistemi che non ce l’hanno. - Corretto il problema per cui anche se non ci fosse GOT/PLT, la PS4 si lamentava delle librerie perché ne aveva bisogno per qualche motivo sciocco.
.got.plt
ora viene forzato nella compilazione, anche se non ci sono voci PLT (grazie IDC).
Video
Download: OpenOrbis PS4 Toolchain v0.2 (exe)
Download: OpenOrbis PS4 Toolchain v0.2 (pkg)
Download: OpenOrbis PS4 Toolchain v0.2 (zip)
Download: Source code OpenOrbis PS4 Toolchain v0.2
Fonte: github.com
Si sa qualcosa per quando rilasciano per fw 5.05+?
Non si sa ancora nulla a riguardo