[Scena PS2] Rilasciato FreeDVDBoot – un nuovo hack della PlayStation 2 attraverso il suo lettore DVD

Dopo un primo tentativo di sfruttare l’interprete BASIC fornito con le prime unità PAL delle console PlayStation 2, il developer Cturt ora ci porta alla scoperta di un secondo exploit che permette di sfruttare la funzionalità del lettore DVD della console.

L’exploit che sfruttava l’interprete BASIC è stato ampiamente criticato sul web, certo dopo tanti anni non sarebbe stato facile reperire il disco Yabasic, e anche la compatibilità che si limitava alle sole console del mercato PAL non rendevano appetibile l’entrypoint, da qui la scelta di cancellare l’exploit che è stato definito dallo stesso sviluppatore poco pratico.

FreeDVDBoot è un nuovo exploit che sfrutta il lettore DVD Player della console PlayStation 2 per riprodurre applicazioni homebrew masterizzati su supporti ottici come video dimostrativi. Con uLaunchELF come programma iniziale, gli utenti saranno in grado di includere molti più programmi homebrew sullo stesso disco.

Step 1: Identificare la versione del lettore DVD

  • Avviare la console PlayStation 2 senza alcun disco inserito e premere per identificare la versione del lettore DVD.
  • Per la versione iniziale è supportato solo DVD Player versione 3.10E (poiché questa è la console che ho). In futuro potrei guardare altre versioni del firmware, e spero che nel tempo anche altri sviluppatori della scena contribuiranno con il supporto per ulteriori versioni del lettore DVD.
  • File ISO predefiniti per lettori DVD supportati contenenti solo uLaunchELF sono forniti in questa repository per facilità d’uso (che può essere utilizzato per avviare l’homebrew tramite dispositivo USB), come 3.10E.iso. Se hai intenzione di creare la tua immagine contenente un caricatore iniziale homebrew/modificato aggiuntivo, continua a leggere.

Step 2: Copiare l’applicazione homebrew

  • Dopo aver identificato la versione del lettore DVD della console, copiare tutti gli homebrew che si desidera includere sul disco in quella directory (ad esempio 3.10E/).

Step 3: Creare un’immagine

  • Dopo aver inserito tutti gli homebrew nella directory, generare un’immagine UDF della directory. Il modo più semplice è probabilmente di installare genisoimage ed eseguire quanto segue (dove exploit.iso è l’output e 3.10E è la directory contenente VIDEO_TS e qualsiasi homebrew):

genisoimage -udf -o exploit.iso 3.10E

Step 4: Test e masterizzazione

  • Ti consiglierei di provare prima su PCSX2, ma poiché PCSX2 non supporta il caricamento del lettore DVD, devi decodificarlo e reimballarlo da solo, cosa che va oltre lo scopo di questa guida. Detto questo, se non tocchi nulla in VIDEO_TS, non dovrebbe esserci alcun motivo per il fallimento dell’exploit.

OPZIONALE: Sostituire il programma iniziale

Ho incluso uLaunchELF ricompilato con il supporto DVD come programma iniziale predefinito. Presenta un menu che consente di selezionare uno qualsiasi dei programmi homebrew che si è scelto di includere sul disco (e consente anche l’avvio da USB).

In alternativa, se preferisci semplicemente avviare una singola applicazione homebrew, il programma iniziale che l’exploit tenta di avviare si trova in VIDEO_TS/VTS_02_0.IFO, sostituiscilo con il tuo file ELF desiderato, con l’avvertenza di seguito che la compatibilità potrebbe essere inferiore rispetto a quando si è avviato un programma tramite uLaunchELF:

Per la versione iniziale, non mi sono preoccupato di reimplementare un paio di funzioni utilizzate dal loader, quindi richiede che l’ELF che carichi non sovrascriva quelle funzioni che utilizzo (quelle sono circa 0x84000 - 0x85fff e 0x250000 - 0x29ffff). Probabilmente rimuoverò questa limitazione in futuro, ma tutti gli ELF che ho potuto trovare andavano bene con questa limitazione.

È possibile eseguire readelf -l per verificare che il file eseguibile soddisfi questo requisito. Ad esempio, questo homebrew Tetris utilizza solo 0x00100000 - 0x0017a940:

$ readelf -l VTS_02_0.IFO

Elf file type is EXEC (Executable file)
Entry point 0x104490
There is 1 program header, starting at offset 52

Program Headers:
  Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
  LOAD 0x001000 0x00100000 0x00100000 0x72ef4 0x7a940 RWE 0x1000

Section to Segment mapping:
  Segment Sections...
  00 .text .ctors .dtors .rodata .data .jcr .sdata .sbss .bss

SVILUPPO: Sostituzione del payload del loader

  • Il payload predefinito avvierà VIDEO_TS/VTS_02_0.IFO come file ELF, ma si potrebbero desiderare modifiche per migliorare la compatibilità, o forse cambiare il comportamento per avviare BOOT.ELF, ad esempio.
  • Se si desidera aggiornare il payload del loader, eseguire build.sh nella directory PAYLOAD e copiare l’output fullpayload.bin in VIDEO_TS/VIDEO_TS.IFO all’offset 0x2bb4 (per 3.10E).

Video dimostrativo

Video dimostrativo del nuovo exploit per console PlayStation 2 attraverso il lettore DVD, che consente di masterizzare giochi homebrew e di eseguirli su di una console non modificata come faresti con i dischi ufficiali.

Questa demo mostra il risultato della patch PS2SDK che aggiunge il supporto per la lettura di dischi video DVD (uLaunchELF ora può caricare homebrew da disco e gli emulatori ora possono caricare ROM da disco).

Documentazione FreeDVDBoot

Repository FreeDVDBoot

(Visited 1 times, 1 visits today)

Lascia un commento

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