[WiiU] Stroopwafel 1.2 : il Successore di iosuhax Basato su SALT iosuhax

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 e syslog 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:

  1. void kern_main() – eseguito prima di tutto in modalità kernel.

  2. 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:

  1. trampoline_hook_before() – Esegue una funzione prima dell’istruzione originale.

  2. 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) a wafel_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


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! 🚀

Da FRANCESCO

Sviluppatore a tempo perso nato negli anni 80, amante delle console e delle retro console.Il mio motto è quello di aiutare il prossimo senza avere rimorsi di cio' che hai fatto.

Lascia un commento

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

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.