Home Mac OS Rilasciato OpenOrbis PS4 Toolchain v0.2

[Scena PS4] Rilasciato OpenOrbis PS4 Toolchain v0.2

648
2

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

[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:

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

  • 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

2 Commenti

LASCIA UN COMMENTO

Per favore inserisci il tuo commento!
Per favore inserisci il tuo nome qui

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.