[Scena PS4] Rilasciato OpenOrbis PS4 Toolchain v0.1.1 Beta [aggiornato x1]

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).

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).

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.

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:

DirectoryContenuti
/binFile eseguibili per strumenti su ogni piattaforma (Windows in /bin/windows e Linux in /bin/linux).
/docsDocumentazione per le specifiche del formato PS4 (reverse engineering) e la toolchain stessa.
/extraFile extra e varie. Attualmente, questo include modelli di progetto per Visual Studio.
/includeContiene i file di intestazione da compilare quando si creano applicazioni/librerie (i file specifici di PS4 sono in /include/orbis.
/libContiene gli stub della libreria a cui collegarsi durante la creazione di applicazioni/librerie.
/samplesProgrammi di esempio per iniziare e per riferimento.
/scriptsScript utili per visualizzare le informazioni Orbis ELF (OELF) e altri strumenti.
/srcContiene 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

(Visited 1 times, 1 visits today)

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *