Home Homebrew Rilasciato GDBStub v0.1

[Scena Wii U] Rilasciato GDBStub v0.1

562
0

L’ultimo aggiornamento beta di Aroma ha portato anche alla realizzazione di nuovo plugin dedicato al debugging delle applicazioni homebrew per le console Wii U.

GDB o più semplicemente GNU debugger è uno strumento che ci permette di vedere cosa succede all’interno di un altro programma mentre questo è in esecuzione o cosa stava facendo un altro programma nel momento in cui si è bloccato.

Il plugin prende base proprio dal debugger GNU gdbstub che si trova all’interno del file coreinit.rpl presente su qualsiasi console Wii U. Può essere utilizzato per correggere diverse funzioni e per consentire l’utilizzo dello stub sulle console retail.

Con queste patch sono stati corretti alcuni bug (ad es. supporto vCont di base e contenuto dei pacchetti escape) ed è stato aggiunto il supporto per query multiple.

L’accesso alla memoria ora avviene completamente tramite il KernelModule che bypassa la MMU, che ci consente di scrivere/leggere ovunque. Per scopi di ricerca si prevede di reimplementare (le parti importanti di) coreinit.rpl gdbstub passo dopo passo.

Caratteristiche

  1. Supporto hardware breakpoint (è supportato massimo un punto di interruzione hw alla volta).
  2. Supporta fino a 512 breakpoint software contemporaneamente.
  3. Watchpoint hardware per l’accesso in lettura/scrittura dei dati con una precisione di 8 byte (è supportato un massimo di un watchpoint hw alla volta).
  4. Passaggio all’istruzione successiva (solo per i thread attualmente attivi).
  5. Memoria/registro lettura/scrittura.
  6. Implementata la query facoltativa qXfer:features:read e qXfer:threads:read.
  7. Interrompi l’esecuzione in qualsiasi momento tramite CTRL+C.
  8. Vedere il file main.h per ulteriori opzioni di configurazione tramite macro.

Requisiti / Limitazioni

  • Utilizzando MochaPayload v0.2 o superiore o qualcos’altro che supporti l’API DK_PChar. Se non si utilizza la moka, probabilmente è necessario regolare la sostituzione makeOpenPath.
  • Qualsiasi homebrew di cui desideri eseguire il debug deve essere compilato con wut 1.2.0-2 o versioni successive. Anche il software ufficiale funziona, ma probabilmente non avrai alcun simbolo.
  • Quando gdbstub viene caricato, inizierà direttamente ad attendere una connessione tramite TCP. Si consiglia di caricare il plug-in quando necessario tramite la rete invece di posizionarlo in modo permanente sulla scheda SD. Per caricare i plugin in fase di esecuzione puoi usare il plugin wiiload.
  • La console non risponderà a nessun altro input durante l’attesa di una connessione. Connettiti allo stub o spegni forzatamente la console (tieni premuto il pulsante di accensione della console per almeno 4 secondi).
  • Il gdbstub rimarrà caricato e attivo fino allo spegnimento della console, è possibile modificare o ricaricare l’applicazione.

Consigliato

  • Utilizzo del modulo USBSerialLogger per avere l’output via seriale durante il debug. Per questo è necessario un cavo seriale USB con un determinato chipset. Leggere la repository USBSerialLogger per ulteriori informazioni.
  • Costruisci le app homebrew con -O0, assicurati di aggiungere il flag del compilatore -g per creare build di debug con informazioni DWARF.

Utilizzo

  • Avviare la console in un ambiente compatibile con WiiUPluginLoaderBackend (ad es. Aroma).
  • Avviare l’app homebrew di cui desideri eseguire il debug.
  • Caricare gdbstub_plugin tramite wiiload.
  • Ora l’app homebrew si riavvierà e attenderà una connessione. (Quando si utilizza la registrazione seriale USB dovrebbe stampare [+-*WAITING FOR DEBUGGER*-+]).
  • Connettiti a gdbstub tramite TCP alla porta 3000.
  • Quando non carichi alcun file di simboli, potresti dover forzare l’endianness tramite set endian big.

Impostazioni di base per gdb:

set arch powerpc:750
set remotetimeout 30
set tcp connect-timeout 60
set print thread-events on
set disassemble-next-line on
set remote hardware-watchpoint-limit 1
set remote hardware-breakpoint-limit 1
target remote tcp:192.168.178.123:3000

Download: GDBStub v0.1

Download: Source code GDBStub v0.1

Fonte: twitter.com

LASCIA UN COMMENTO

Per favore inserisci il tuo commento!
Per favore inserisci il tuo nome qui

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.