Dopo la pubblicazione di Mira Homebrew Enabler, arriva la primissima beta di OpenOrbis PS4 Toolchain, un SDK e un set di strumenti open source dedicato agli sviluppatori di applicazioni homebrew.
Abbiamo già visto come il developer Specter sia riuscito a sviluppare un primo Payload Loader sviluppato attraverso la toolchain personalizzata OpenOrbis (OOSDK).
OpenOrbis PS4 Toolchain v0.1.1 has released. This includes fixes for the clang 10+ issue, an issue where makefiles were not creating intermediate directories, and an issue where the setup scripts in /extra had CRLF line endings.https://t.co/394Rih7uAn
— Specter (@SpecterDev) May 13, 2020
La toolchain attualmente supporta diverse librerie, dall’uscita video, all’uscita audio e FreeType (la libreria di funzioni che implementa un motore per la resa grafica dei caratteri font) insieme alla libc (la libreria standard).
[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
- Corretto il problema #6 in cui i campioni non potevano basarsi su clang 10.0+. Ringraziamo IDC, frangarcj per l’aiuto in root che causava il problema, 1UP e Tustin per i rapporti iniziali.
- Corretto il problema #7 in cui i makefile non creavano directory intermedie e pertanto non venivano compilati.
- Corretto il problema #8 in cui gli script
setup-*.sh
in/extra
avevano terminazioni di riga CRLF, causando errori durante il tentativo di eseguire gli script.
Video
Download: OpenOrbis PS4 Toolchain v0.1.1 Beta
Download: OpenOrbis PS4 Toolchain (exe)
Download: Source code OpenOrbis PS4 Toolchain v0.1.1 Beta
Fonte: github.com