Copy Link
Add to Bookmark
Report

Come modificare la TOC

DrWatson's profile picture
Published in 
guide hacker
 · 20 Jun 2019

Il fine di questa guida è spiegare come modificare la TOC (Table of Contenents), per poter inserire in un iso un file leggermente superiore alla sua grandezza originaria (purché si tratti di pochi kb, ma dovreste sapere che con pochi kb si fanno miracoli, soprattutto con files compressi).
Questa guida è comunque ormai “pragmaticamente” inutile, data la pubblicazione del TOC Changer di Phoenix (che trovate su SadNES cITy o Romhacking.NE); la sto rimettendo online per i più curiosi di voi.

NOTA BENE: Quando scrissi questa guida, non sapevo che Final Fantasy VII avesse una “seconda TOC” nascosta nel file YAMADA.BIN. Per poter espandere correttamente il WINDOW.BIN ED IL KERNEL.BIN occorre non solo seguire questa guida, ma anche modificare l’interno questo file, contenente l’LBA e le dimensioni dei file più importanti del gioco. Inoltre, si fa presente che l’espansione della TOC potrebbe NON funzionare, qualora si lavorasse con giochi che adoperano indici, pur mantenendo una TOC standard (esempio: Legend of Mana).

Perdonate questi “peccati di gioventù”!

1. Cos’è la TOC, ed a cosa serve?


Come il nome dice, la TOC non serve ad altro che ad “indicare” dove sono i files all’interno di un cd ed ad indicarne le varie proprietà (grandezza, dimensione e così via...).
Il nostro scopo è quello di modificarla, per poter reinserire un file leggermente più grande dell’originale.
Prendiamo come esempio il file WINDOW.BIN di Final Fantasy 7 (contenuto nella cartella \INIT\), contenente la maggior parte della grafica del menu del gioco.

Come modificare la TOC
Pin it

Come potete vedere, la TOC indica che grandezza attuale del file è 13’769 bytes.
Supponiamo di ritrovarci, dopo averlo editato e ricompresso, un file più grande, per l’esattezza di 13'900 bytes.
Come fare a reinserirlo? Semplice, basterà modificare la TOC, facendo in modo che indichi che la grandezza del WINDOW.BIN non sia più di 13769, bensì 13900 bytes.


2. Come modificare la TOC


Eccoci qui, nella parte più importante di questa piccola e, spero utile, guida. Innanzitutto vi serviranno i seguenti programmi:
Hex Workshop (una qualsiasi versione va bene)
Transhlextion 1.6c
CDMage versione 1.02.1 (non serve a modificare la TOC , ma è ottimo per reinserire files in un iso)

Una volta accertato di possederli tutti, è ora di divertirsi!

Nota: le operazioni sotto descritte possono, ovviamente, essere realizzate anche con programmi diversi, magari che permettono di modificare direttamente un file iso, come WinHex o il ThingyV2 . Anche lo stesso HexWorkshop può andare bene, purché abbiate diversi GB di RAM a disposizione (e quando scrissi questa guida, io avevo qualcosa come 256MB di RAM sul mio PC!). Le operazioni da compiere sono, ovviamente, le stesse, soltanto che vi eviterete la noia di dover passare da un programma all’altro.


Passo numero 1: Trovare nell’iso le informazioni relative al file
Questa è un’operazione assai semplice.
Segnatevi il nome del file da cercare (nel nostro caso WINDOW.BIN ), e a questo punto aprite con HexWorkshop il file immagine, poi immettete come parametro di ricerca (testo) il nome del file.

Come modificare la TOC
Pin it

Una volta trovato il nome del file, segnatevi il suo offset (nel nostro caso x1600C5), sottraendo però al totale circa x20 (con xNumero intendo bytes hex), poi capirete perché.


Passo numero 2: Modificare la TOC
Eccoci arrivati al cuore dell’operazione...ora prestate molta attenzione.

Innanzitutto segnatevi quanto è grande il file originale (nel nostro caso 13.769 bytes), ed a questo punto convertite la cifra decimale in esadecimale (usate la calcolatrice di Windows).
13’769 diviene, ad esempio, 35C9.
Compiuta questa operazione, invertite la cifra esadecimale ottenuta (ricordatevi che un byte hex è formato da due simboli numerici, ad esempio 6D è un byte).

35C9 diviene perciò C935.

La stessa operazione è da farsi con il file modificato, accertandovi di segnare la grandezza in hex di ambedue i numeri, invertita e non.

Adesso, col Transhlextion , utilizzate il comando “Apri parzialmente”, e dite al programma di caricare circa 200 bytes, partendo dall’offset che avevate trovato con HexWorkshop , ricordandovi sempre di sottrarre x20.

Come modificare la TOC
Pin it

Fatto ciò, cercate nei bytes precedenti al nome del file la grandezza in hex del file originale, sia coi bytes invertiti che con quelli “originali” .
Noterete subito che nei 20 bytes precedenti al nome (capite ora perché prima vi ho fatto fare la sottrazione di x20 dall’offset?) vi saranno entrambe le coppie:


La coppia invertita...

Come modificare la TOC
Pin it

e quella NON invertita:

Come modificare la TOC
Pin it

Trovate le coppie, siete oramai in prossimità del traguardo. Modificate le cifre esadecimali (sia quella invertita che quella “normale”), sostituendo alle originali quelle del file più grande (esempio: al posto di 35C9 mettete 364C ), e, compiuta l’operazione, andate a controllare nel CD la grandezza attuale del file...

Come modificare la TOC
Pin it

Il file si è “magicamente” espanso, passando da 13.769 bytes a 13.900.
In realtà il file è rimasto identico, è stata la TOC ad essere stata modificata, indicando che il file è grande 13'900 bytes, mentre i bytes effettivi sono 13'769.
Comunque, anche lasciando il file originale intatto con la TOC modificata non si otterrebbe nessun problema, poiché i bytes in più non sono altro che degli 00.

In realtà, in un cd, tra un file ed un altro ci sono sempre vari kb di 00 inutilizzati, che possono però essere sfruttati liberamente, una volta modificata la TOC, cosa che spero siate riusciti a fare senza problemi.
Adesso non vi resta che reinserire comodamente il file con CdMage e testare il vostro file espanso...

Passo numero 3: Correggere gli ECC


Vi è un’ultima operazione da compiere prima di dichiarare completa l’operazione: la correzione degli ECC della ISO. Benché CDMage corregga gli ECC dei settori dei file che andate a sostituire, la modifica manuale della TOC va ad intaccare il settore dove sono contenuti i dati del vostro file, finendo per corrompere gli ECC di quel determinato settore.

Aprite il programma e selezionate il percorso della vostra ISO. Successivamente, cliccate sul pulsante con il martello per aprire il pannello delle opzioni, ed assicuratevi di impostare il “secure mode scanning” e di selezionare la casella con “fix mode 2 form 2 sectors”. Avviate poi la scansione, che dovrebbe durare pochissimo.

Come modificare la TOC
Pin it

Non appena incontrerete uno o più settori con ECC errato, basterà selezionarli e correggerli.

Questo è tutto, gente!


3. Note
Già che ci sono vi do qualche piccola dritta...

Innanzitutto, vi consiglio di modificare la TOC in modo che possa contenere anche un file più grande di quello modificato...sapete, magari vi ritroverete a modificarlo di nuovo, ingrandendolo ancora, ed allora vi ringrazierete per aver “espanso” più del dovuto.

Seconda cosa...troverete questa operazione utile soprattutto modificando dati compressi, dove capita spesso di trovarsi con files ricompressi leggermente più grandi del normale...
Sarà allora che la modifica alla TOC sarà vitale; vi permetterà di fare cose prima impensabili... Pensate quanto è frustante ritrovarsi con un file di pochissimi bytes più grande, impossibile da reinserire!
E qui la modifica alla TOC dà il meglio di sé.

Ultimo consiglio ...la TOC, ovviamente, non potrà “espandere” all’infinito un file, ché, ingrandendo troppo, si rischia di sovrascrivere il file successivo oppure gli ECD/ECC che riguardano il file che dobbiamo espandere.
Per controllare la dimensione massima raggiungibile basta un piccolo calcolo, nient’altro che una sottrazione di due LBA (conosciuti anche come Block ) e di una moltiplicazione per 2048 (che nello standard ISO9600 sono i bytes per settore). Non sono da contarsi infatti gli ultimi 304 bytes per settore in un file immagine RAW .
La formula è questa:

LBA 1 = file da espandere
LBA 2 =file successivo a quello da espandere

(LBA 2 – LBA 1) · 2048 = risultato massimo

Prendendo come esempio il WINDOW.BIN ed il successivo KERNEL.BIN...

(622–615)· 2048=7· 2048=14’336.

Dunque il WINDOW.BIN non potrà avere dimensione maggiore di 14336 bytes.


4. Come contattarmi


Nel caso desideraste contattarmi potete adoperare varie vie...
La prima è scrivermi un’email all’indirizzo sephiroth1311@sadnescity.it, altrimenti potete trovarmi nel canale sul forum di SadNES cITy.


5. Congedo


Beh, eccoci giunti alla conclusione di questa breve e, spero, esauriente guida.
Credo di essere riuscito a scriverla senza fare apparire l’operazione troppo difficile (in realtà è facilissima) e, soprattutto, spero che questa piccola ma utilissima operazione possa aiutarvi nell’hacking di giochi su CD che utilizzano una normale TOC.

Un grandissimo ringraziamento a Gemini , il quale mi spiegò come modificarla, permettendomi di modificare agevolissimamente alcuni files compressi di Final Fantasy 7 contenenti varia grafica.

Altro grande ringraziamento ad Auryn , che mi ha suggerito di inserire nella guida il piccolo calcolo per scoprire immediatamente la grandezza massima che può avere il file da espandere.
Devo ammettere che sono stato alquanto distratto a non pensarci prima!

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT