Stroopwafel è un nuovo progetto basato su SALT iosuhax, che introduce una serie di funzionalità avanzate per la modifica e il controllo del sistema IOSU sulla Wii U. Con miglioramenti significativi rispetto alle soluzioni precedenti, Stroopwafel offre maggiore flessibilità, sicurezza e prestazioni, rendendolo una scelta ideale per sviluppatori e utenti avanzati.
Funzionalità Principali
Le caratteristiche più rilevanti includono (consultare anche ios_process/source/config.h
):
Supporto de_Fuse
-
Redirect di tutte le letture OTP alla RAM: richiede
minute_minute
per applicare i patch ai dati. -
Caricamento di
fw.img
decrittato in IOSU: migliora la compatibilità con modifiche personalizzate. -
IOSU reload passa attraverso
minute
: semplifica l’applicazione di patch.
Sicurezza e Stabilità
-
Scritture SEEPROM disabilitate: previene modifiche accidentali alla memoria critica.
-
Accelerazione redNAND MLC: sposta la cache MLC (SCFM) su SLCCMPT per migliorare le prestazioni.
-
Hooks per semihosting: invia
kprintf
esyslog
alla seriale pico de_Fuse.
Gestione USB Avanzata
-
Disabilitazione del disco fisso (senza scritture SEEPROM).
-
USB_SHRINKSHIFT: consente di avere sia il filesystem della Wii U che un filesystem normale sullo stesso drive, spostando la partizione Wii U dopo l’MBR.
-
USB_SEED_SWAP: sostituisce la chiave USB SEEPROM per semplificare la migrazione del sistema.
Funzionalità Sperimentali/Instabili
-
Caricamento di
kernel.img
dalla scheda SD (non ancora stabile).
Avvertenze Importanti
-
Il formato redNAND è incompatibile con altre implementazioni: utilizzare
minute
per la formattazione. -
Se hai già unità USB configurate, mantieni
USB_SHRINKSHIFT=0
per evitare conflitti. -
PRINT_FSAOPEN
è utile ma estremamente lento (usare con cautela). -
Testato solo su
fw.img
5.5.x: non è ancora stato portato su versioni precedenti.
Plugin per Estendere le Funzionalità
Stroopwafel supporta plugin aggiuntivi per applicare patch personalizzate all’IOSU. Un plugin compilato può essere posizionato accanto a wafel_core.ipx
e verrà caricato da minute
. Stroopwafel chiama due hook nel plugin:
-
void kern_main()
– eseguito prima di tutto in modalità kernel. -
void mcp_main()
– eseguito prima del thread principale di MCP.
Entrambe le funzioni devono restituire il controllo, ma mcp_main()
può generare nuovi thread.
Un esempio di plugin è disponibile qui: wafel_plugin_example.
Applicare Patch all’IOSU
Un plugin può modificare l’IOSU utilizzando diverse macro fornite da Stroopwafel in wafel/patch.h
:
Macro | Descrizione |
---|---|
U32_PATCH_K(_addr, _val) |
Sovrascrive un indirizzo virtuale con un valore a 32 bit. |
ASM_PATCH_K(_addr, _str) |
Inserisce codice assembly compilato all’indirizzo specificato. |
ASM_T_PATCH_K(_addr, _str) |
Come sopra, ma per codice Thumb. |
BL_TRAMPOLINE_K(_addr, _dst) |
Genera un branch relativo (BL) verso _dst . |
BRANCH_PATCH_K(_addr, _dst) |
Genera un branch (B) verso _dst . |
Hooking con Trampoline
Stroopwafel offre due metodi per agganciarsi all’IOSU e chiamare codice personalizzato:
-
trampoline_hook_before()
– Esegue una funzione prima dell’istruzione originale. -
trampoline_blreplace()
– Sostituisce una chiamata BL con una funzione personalizzata.
Un esempio completo è disponibile qui: wafel_trampoline_demo.
Dettagli Tecnici
Stroopwafel funziona in modo simile a SaltyNX:
-
Reindirizza l’esecuzione dal reset handler (
0xFFFF0000
) awafel_core
. -
Applica patch al kernel IOS, ai moduli e ai segmenti prima di avviare il sistema.
-
I plugin utilizzano la RAM alla fine del ramdisk (
0x20000000
).
I plugin sono mappati in tutti i moduli IOS per consentire patch avanzate e sostituzioni di funzioni. Inoltre, vengono aggiunti mapping MMU per consentire trampoline a singola istruzione.
Download e Aggiornamenti
-
v1.2 Latest: Aggiunto supporto per trampoline dal modulo NET.
🔗 Scarica l’ultima versione
Conclusioni
Stroopwafel rappresenta un passo avanti significativo nella scena della modifica della Wii U, offrendo maggiore controllo, sicurezza e prestazioni rispetto alle soluzioni precedenti. Con il supporto per plugin e trampoline, gli sviluppatori possono creare patch personalizzate con facilità.
Se sei interessato a sperimentare con l’IOSU o a sviluppare nuove funzionalità, Stroopwafel è la scelta ideale! 🚀