Il developer esc0rtd3w ha apportato alcune modifiche al codice originale di BadHTAB, l’exploit dell’hypervisor per console PlayStation 3 affonda le sue radici in una vulnerabilità scoperta dal leggendario hacker XORLOSER e successivamente sfruttata da GeoHot nel 2010.
Il nome deriva da un bug nella gestione della Hash Table (HTAB), una struttura dati fondamentale dell’hypervisor che mappa la memoria virtuale a quella fisica, garantendo il controllo degli accessi.
L’exploit utilizza una tecnica combinata hardware-software: un glitch hardware interrompe brevemente un segnale RAM mettendolo a massa, mentre un payload software sfrutta questa interruzione per sospendere il puntatore dei dati dell’HTAB durante l’invalidazione di una voce.
Questo errore consente di mantenere valida una regione di memoria che altrimenti sarebbe protetta, offrendo permessi di lettura e scrittura completi in una piccola area.
Tale area può poi essere manipolata dall’hypervisor stesso, permettendo un accesso totale alla memoria della console.
Componenti Principali
BadHTAB si basa su due elementi chiave:
- BadHTAB (Software): La componente software, distribuita come file PKG per PS3, gestisce l’exploit una volta avviato il glitch. È responsabile dell’accesso all’hypervisor e dell’esecuzione delle funzioni configurate dall’utente.
- ps3pulldown2 (Hardware): La parte hardware, basata su un Raspberry Pi Pico (RP2040), comunica con la PS3 tramite porta USB e automatizza il glitch. A differenza della versione Linux, che tollerava una finestra di glitch più ampia, su GameOS l’automazione è indispensabile per garantire una minima stabilità.
Nonostante questi progressi, il tasso di successo rimane basso (5-10%), rendendo BadHTAB un’opzione per utenti esperti e pazienti, non per un uso quotidiano.
Inoltre, richiede saldature sulla scheda madre, un processo non complesso ma che può destabilizzare il boot della console se non eseguito correttamente.
Caratteristiche
Dopo un’esecuzione riuscita, saranno possibili le seguenti operazioni:
- hvcall 114 ovunque: consente la mappatura di qualsiasi area di memoria senza restrizioni.
- Nuove funzioni lv1_peek/poke/exec tramite hvcall: aggiunto il supporto a lv1 peek (34), poke (35) ed exec (36) tramite hvcall (vedi sotto).
- Dump della memoria lv1: permette di salvare la memoria lv1 su file.
- Avvio di un lv2_kernel.fself personalizzato: consente il caricamento di qualsiasi kernel lv2, purché in formato
.fself
. - Avvio di OtherOS: consente l’avvio del bootloader Petitboot e il ripristino della possibilità di usare OtherOS e Linux.
Nota: se utilizzi le funzioni di avvio lv2/OtherOS, la nuova hvcall verrà rimossa. Tuttavia, hvcall 114 ovunque resterà attiva, quindi potrai usarla per reinstallare di nuovo la nuova hvcall.
Nuove chiamate hv (hypervisor calls)
// lv1_peek(34)
// in: r3 = addr
// out: r3 = value
// lv1_poke(35)
// in: r3 = addr, r4 = value
// out: r3 = 0
// lv1_exec(36)
// in: r3-r8 = args, r9 = addr
Guida all’Installazione di BadHTAB
Ecco una guida dettagliata per installare e utilizzare la seconda build di BadHTAB:
Requisiti Hardware
- Raspberry Pi Pico (RP2040).
- Filo magnetico da 0,1 mm.
- Strumenti per saldatura
- PS3 Super Slim (questa guida è specifica per questo modello).
Installazione hardware
- Identificazione dei punti di saldatura: Individuare le resistenze RQ sulla scheda madre (es. RQ8 sul lato sinistro, RQ7 sul destro). Consultare il manuale di servizio o dissaldare la RAM per tracciarle manualmente.
- Saldatura:
- Saldare un filo a RQ8 (lato sinistro) e l’altro capo a GP15 del Pico.
- Saldare un secondo filo a RQ7 (lato destro) e l’altro capo a GP16 del Pico.
- Assemblaggio: Rimontare la console, assicurandosi che i fili non tocchino terra o metallo (mantenerli sospesi).
- Installazione del firmware Pico: Tenere premuto il tasto BOOTSEL mentre si collega il Pico al PC, copiare il file
.uf2
(dalla repository) nel drive che appare e scollegare. - Test di avvio: Collegare l’HDD alla PS3 e accenderla senza coperchio per verificare il boot (la spia dell’HDD dovrebbe lampeggiare). Se non si avvia, regolare i fili. Utilizzare un cacciavite per cortocircuitare il pulsante di accensione (fragile sulle Super Slim).
Installazione Software
- Installazione del PKG: Scaricare il file
BadHTAB.pkg
e installarlo sulla PS3 tramite USB o Package Installer. - Configurazione:
- Dump LV1: Creare un file vuoto (
BadHTAB_doDumpLv1.txt
per 16 MB oBadHTAB_doDumpLv1_240M.txt
per 240 MB) in/dev_hdd0/
. - Avvio lv2_kernel.fself: Decriptare il file
lv2_kernel.self
in.elf
, convertirlo in.fself
conmake_fself.exe
(Sony SDK), creare un fileBadHTAB_doLoadLv2Kernel_Fself.txt
in/dev_hdd0/
e copiare il filelv2_kernel.fself
in/dev_flash/sys/
(utilizzare/dev_blind/
con webMAN MOD). - Avvio OtherOS: Creare il file
BadHTAB_doOtherOS.txt
in/dev_hdd0/
e copiare il file dtbImage.ps3.fself in/dev_flash/sys/
(liberare spazio eliminando ps1emu/ps2emu/pspemu se necessario).
- Dump LV1: Creare un file vuoto (
- Spegnimento sicuro: Spegnere la console prima di procedere.
Esecuzione dell’Exploit
- Collegare il Pico alla porta USB della PS3.
- Avviare BadHTAB dal menu della XMB.
- Ascoltare i segnali acustici:
- Un triplo beep breve indica l’avvio dell’exploit.
- Durante il glitch, il LED del Pico lampeggia e si sentono beep frequenti. Se si fermano o la console si spegne, il tentativo è fallito: riavviare e riprovare (potrebbero volerci ore).
- Due triple beep brevi con una pausa indicano successo: L’exploit patcha il LV1, installa gli hvcall ed esegue le configurazioni scelte.
- Con lv2/OtherOS, l’avvio avviene ora; altrimenti, un beep di 5 secondi segnala il ritorno alla XMB.
- I log vengono salvati in
/dev_hdd0/BadHTAB.txt
.
Modifiche aggiuntive da esc0rtd3w
- Riavvio automatico se il glitch manda in crash la PS3.
- UART0 abilitata per il Pico.
- UART1 abilitata per l’ingresso sb_uart della PS3.
- Monitoraggio dello standby dell’alimentatore (PSU).
- Monitoraggio del connettore del flat cable di alimentazione.
- 4 LED di stato.
Il glitch è molto più facile da eseguire ripetutamente in caso di crash — e succederà 😉 — senza dover scollegare il cavo di alimentazione o spegnere la ciabatta.
Supporta il riavvio automatico quando rileva errori. Monitora la sb_uart della PS3 per ricevere messaggi e controllare il comportamento del Pico. Sono incluse molte altre modifiche.
Ci sono ancora alcuni bug da sistemare: a volte la PS3 va in uno stato di crash da cui il Pico non riesce a recuperare automaticamente, quindi è necessario spegnere e riaccendere manualmente la PS3.
È necessario saldare fili nei punti appropriati su PS3 e Pico.
Connessioni resistori PS3 per il glitch (ne basta una)
pulldown1_pin_id (RQ7)
→GPIO15
pulldown2_pin_id (RQ8)
→GPIO16
Pin di monitoraggio della PS3
pwr_on_pin_id (connettore flat 3.3V PS3)
→GPIO10
sb_uart_rx_pin (PS3 SB_TX)
→GPIO5
standby_mon_pin_id (Pin 3 PSU Standby)
→GPIO18
hdd_activity_pin (Anodo LED HDD PS3)
→GPIO22
Pin di stato del Pico (LED)
error_led_pin (Rosso)
→GPIO6
yellow_led_pin (Giallo)
→GPIO2
green_led_pin (Verde)
→GPIO21
blue_led_pin (Blu)
→GPIO27
Download: Source code BadHTAB
Fonte: psx-place.com