Home Homebrew Rilasciato Stroopwafel v1.4

[Scena Wii U] Rilasciato Stroopwafel v1.4

129
0

Pubblicato un rapido aggiornamento per Stroopwafel, un framework e firmware personalizzato per console Wii U, successore di iosuhax e basato su SaltyNX, che introduce nuove funzionalità per la gestione avanzata del sistema operativo IOSU.

Stroopwafel è progettato per patchare il kernel IOSU e i suoi moduli, offrendo funzionalità avanzate rispetto a iosuhax. Funziona reindirizzando l’esecuzione del codice al componente principale wafel_core invece del reset handler standard a 0xFFFF0000.

Dopo aver applicato le patch necessarie, wafel_core salta a 0xFFFF0000 per avviare il sistema. I plugin di Stroopwafel utilizzano la memoria alla fine del ramdisk da 128 MiB a 0x20000000 e sono mappati su tutti i moduli IOS per consentire patch di codice e sostituzioni di funzioni.

I plugin sono PIE (Position Independent Executable) e si auto-ricollocano all’avvio, con possibilità di risolvere simboli da altri plugin.

L’aggiornamento migliora la robustezza del supporto a redNAND, la modalità di emulazione della NAND della console, e della gestione nocrypt, utile per l’accesso ai contenuti non criptati.

Questo rafforza la stabilità complessiva del sistema durante il montaggio dei file system personalizzati e nelle operazioni più delicate con la memoria interna.

Funzionalità principali

Stroopwafel include tutte le funzionalità di iosuhax (come redNAND, wupserver, ecc..) e aggiunge le seguenti caratteristiche:

  • Supporto per de_Fuse: Reindirizza le letture OTP alla RAM, richiede minute_minute per applicare i dati.
  • Caricamento di fw.img decrittato in IOSU.
  • Ricaricamenti IOSU attraverso minute per semplificare le patch.
  • Disabilitazione delle scritture su SEEPROM per maggiore sicurezza.
  • redNAND MLC acceleration: sposta la cache MLC (SCFM) su SLCCMPT per migliorare le prestazioni.
  • Semihosting hooks: stampa kprintf e syslog su seriale pico de_Fuse.
  • Disabilitazione del disco senza scrittura su SEEPROM.
  • USB_SHRINKSHIFT: consente di avere sia il filesystem Wii U che un filesystem normale su un dispositivo USB, spostando la porzione Wii U dopo l’MBR.
  • USB_SEED_SWAP: sovrascrive la chiave USB SEEPROM per semplificare la migrazione del sistema.
  • Funzionalità sperimentali: caricamento di kernel.img da scheda SD (non stabile).

Avvertenze

  • La formattazione redNAND di Stroopwafel è incompatibile con altre implementazioni; utilizzare minute per formattare.
  • Mantenere USB_SHRINKSHIFT a 0 se si utilizza dispositivi USB esistenti.
  • L’opzione PRINT_FSAOPEN è utile ma estremamente lenta.
  • Testato solo su firmware 5.5.x (fw.img); non è stato portato su versioni precedenti.
  • L’uso errato delle patch può causare il brick della console; leggere attentamente le istruzioni.

Utilizzo dei plugin

I plugin consentono di applicare patch aggiuntive a IOSU. Per utilizzarli:

  1. Posizionare il plugin compilato (es. 00core.ipx) accanto a wafel_core.ipx nella directory sd:/wiiu/ios_plugins o /storage_slc/sys/hax/ios_plugins.
  2. All’avvio, minute caricherà automaticamente i plugin.
  3. Ogni plugin può implementare due hook:
    • void kern_main(): eseguito in modalità kernel prima di tutto il resto.
    • void mcp_main(): eseguito prima del thread principale di MCP; può generare nuovi thread.
  4. Entrambe le funzioni devono terminare (return), ma mcp_main() può avviare thread aggiuntivi.
  5. Un esempio di plugin è disponibile in wafel_plugin_example.

Patch di IOSU con Stroopwafel

Stroopwafel fornisce macro definite in wafel/patch.h per applicare patch a IOSU:

  • U32_PATCH_K(_addr, _val): Sovrascrive un indirizzo virtuale con un valore a 32 bit.
  • ASM_PATCH_K(_addr, _str): Applica codice assembly specificato come stringa, assemblato al momento della compilazione e copiato in runtime all’indirizzo specificato (non supporta riferimenti relativi esterni).
  • ASM_T_PATCH_K(_addr, _str): Come sopra, ma per codice Thumb.
  • BL_TRAMPOLINE_K(_addr, _dst): Genera un’istruzione BL relativa all’indirizzo specificato; non può saltare al codice del plugin (distanza eccessiva).
  • BL_T_TRAMPOLINE_K(_addr, _dst): Come sopra, ma per Thumb.
  • BRANCH_PATCH_K(_addr, _dst): Genera un’istruzione B relativa; non può saltare al codice del plugin.

Hook di IOSU con Trampolini

Stroopwafel offre funzioni in wafel/trampoline.h per agganciare codice C o assembly a IOSU:

  • trampoline_hook_before(uintptr_t addr, void *target): Crea un trampolino con un’istruzione BL per chiamare la funzione specificata, preservando i registri. Non supporta istruzioni con indirizzamento relativo al PC, tranne BL, che salta al target originale.
  • trampoline_t_hook_before(uintptr_t addr, void *target): Come sopra, ma per Thumb; sovrascrive due istruzioni (perché BL occupa 4 byte).
  • trampoline_blreplace(uintptr_t addr, void *target): Sostituisce una chiamata BL. La nuova funzione riceve i primi quattro argomenti (r0-r3), un puntatore al target originale e il LR salvato, seguiti dagli argomenti sullo stack.
  • trampoline_t_blreplace(uintptr_t addr, void *target): Come sopra, ma per Thumb.
  • trampoline_blreplace_with_regs(uintptr_t addr, void *target): Simile a trampoline_blreplace, ma salva anche i registri r4-r12 per usarli come argomenti.
  • trampoline_t_blreplace_with_regs(uintptr_t addr, void *target): Come sopra, ma per Thumb, salva r4-r7.

I trampolini supportano hook multipli sullo stesso indirizzo. Con blreplace, la funzione sostitutiva deve chiamare quella originale tramite il puntatore fornito per non interrompere la catena. Un esempio di trampolini è disponibile in wafel_trampoline_demo/source/main.c.

Configurazione di USB_SHRINKSHIFT

Per utilizzare la funzionalità USB_SHRINKSHIFT (che consente di avere sia il filesystem Wii U che un filesystem normale sullo stesso dispositivo USB):

  • Formattare il dispositivo USB con una partizione FAT32 come prima partizione.
  • Creare una seconda partizione NTFS per il filesystem Wii U.
  • Assicuratevi che USB_SHRINKSHIFT sia abilitato (impostato a 1) nel file di configurazione (ios_process/source/config.h).
  • Collegare il dispositivo USB alla Wii U; la porzione Wii U sarà spostata dopo l’MBR per compatibilità.

Changelog

  • Reso più robusto il montaggio del file system in redNAND e la gestione dei contenuti non criptati (nocrypt).

Download: Stroopwafel v1.4 (00core.ipx)

Download: Stroopwafel v1.4 (5debug.ipx)

Download: Source code Stroopwafel v1.4

Fonte: github.com

Alcune parti di questo articolo sono state generate con l’aiuto dell’intelligenza artificiale.

🔥 Prodotti in promozione e articoli più venduti: PS4

Vedi altri prodotti PS4

Questo articolo contiene link affiliati a Amazon. Se acquisti tramite questi link, potrei guadagnare una commissione senza costi aggiuntivi per te.

LASCIA UN COMMENTO

Per favore inserisci il tuo commento!
Per favore inserisci il tuo nome qui
Captcha verification failed!
Punteggio utente captcha non riuscito. Ci contatti per favore!

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