PDA

View Full Version : [HEX] Chiarimenti sulla struttura...


x_Master_x
13-09-2011, 19:30
Ciao Ragazzi,
eccomi di nuovo in questa sezione per una piccola questione che non riesco a risolvere.
Tra beta-test vari, a volte traduco dei software di diverse lingue, no-profit ovviamente, per la comunità di internet sotto vari pseudonimi.
Nella maggioranza dei casi il software è corredato di file .ini, oppure al limite modifico la struttura dell' .exe ( String Table )

Nei casi più sfortunati però sono costretto a passare direttemente alla struttura del file con un editor HEX.

Il problema:
Dalle mie piccole conoscenze riesco a modificare la stringa da tradurre in un solo caso:

Devo modificare esattamente lo stesso numero di byte, oppure avrò un errore alla ricompilazione

Il numero di byte può essere anche minore, vi faccio un esempio:


4D49423867746163000000000C0000000A53696D756C6174696F6E004D49423834363638000000000C00

MIB8gtac.........Simulation.MIB84668......


Lo posso tradurre in:


4D49423867746163000000000C0000000A53696D756C6100000000004D49423834363638000000000C00

MIB8gtac.........Simula.....MIB84668......



Il mio problema, come in questo caso, che a volte la traduzione è più lunga in termini di byte.

"Simulation" sarebbe:
53696D756C6174696F6E

"Simulazione" invece avrebe 2 byte in più:
53696D756C617A696F6E65

Se provo a usa la funzione "Sostituisci" e salvo il file, alla fine l'.exe non funzionerà e darà errore, perchè probabilmente non rispetto la struttura originaria. Non ho idea di cosa si debba modificare in un caso come questo.

Un grazie anticipato :D

x_Master_x
15-09-2011, 16:45
Up
Se avete bisogno di altre informazioni o vi devo allegare un file tipo ( tanto ne ho più di 50 da modificare ) ditelo pure con tranquillità :D

Mixmar
15-09-2011, 17:06
Non conosco il formato che tu vuoi modificare: tuttavia, sento che stai facendo qualcosa di abbastanza sbagliato, ed è normale che il codice non funzioni. Probabilmente qualche offset va cambiato; putroppo, come già detto, non conosco quel formato, e quindi ti consiglio di partire dalla sua definizione (http://en.wikipedia.org/wiki/COFF) se vuoi imparare come funziona.

Naturalmente, sottolineo che modificare un file EXE, ossia un eseguibile compilato, senza il permesso del licenziatario, può costituire violazione di licenze ed essere perseguibile.

x_Master_x
15-09-2011, 17:50
Non conosco il formato che tu vuoi modificare: tuttavia, sento che stai facendo qualcosa di abbastanza sbagliato, ed è normale che il codice non funzioni. Probabilmente qualche offset va cambiato; putroppo, come già detto, non conosco quel formato, e quindi ti consiglio di partire dalla sua definizione (http://en.wikipedia.org/wiki/COFF) se vuoi imparare come funziona.

Naturalmente, sottolineo che modificare un file EXE, ossia un eseguibile compilato, senza il permesso del licenziatario, può costituire violazione di licenze ed essere perseguibile.

Premetto che non sono .exe, e che si tratta solo di una traduzione. Dovrebbero arrestare tutti i traduttori amatoriali tipo giochi ecc... :D
Il problema è che non tutti si rendono disponibili e, come in questo caso, mi rendono il "compito" più complesso, nonostante se traduco il file non tolgo nulla a XYZ e non mi sembra di far nulla di male, anzi.

Comunque non capisco perchè se rispetto il numero di byte non dà problemi, se invece aggiungo anche uno 00 il file non funziona più.
Il tuo link non mi è molto di aiuto, mi servirebbe qualcosa di più pratico, se possibile.
Grazie :)