Benvenuto Visitatore(Log In|Registrati)

 
Reply to this topicStart new topic
> MINI-GUIDA Generale sulla traduzione di giochi DOS, Come trovare i puntatori all'interno dei file
TheRuler
messaggio4 Jun 2023, 14:57
Messaggio #1



Gruppo icone

Gruppo: SMod
Messaggi: 14.545
Iscritto il: 20 January 06
Da: Bologna
Utente Nr.: 2.653
Entropologo part-time

BGE AG: Indy3
Arcade: Silpheed
Free Roaming: Shadow of the Colossus
RTS: Praetorians

Playing Magari...
SO Windows7

OGI Supporter




In riferimento alla discussione su Centurion e alla patch in spagnolo di Raul: Applausi!
Ho piacere di esserti stato utile e complimenti vivissimi per la traduzione!!!


Per quanto riguarda la tua domanda su come trovare i puntatori in un eseguibile dos il metodo che mi è stato insegnato qui e che uso è questo:

1- Mi assicuro che l'eseguibile non sia compresso (in quel caso trovare puntatori o testo sarebbe IMPOSSIBILE), si capisce se nell'exe c'è una compressione da questi particolari:
- sai quasi per certo che il testo è all'interno dell'exe ma questo non si trova
- trovi testo che ASSOMIGLIA a qualcosa di senso compiuto
- trovi parole chiave come "pack" (in VBEGA c'è scritto ad esempio "Packed file is corrupted" alla fine) o LZXX (nell'header di centurion c'era LZ09, la versione del compattatore usato per ridurre l'exe)
- non trovi un singolo spazio vuoto, il codice risulta molto compatto.
Prova comunque sempre a darlo in pasto a UNP, è una sicurezza.

2- Una volta decompresso cerco parole chiave come "MS Run-Time Library" o "Borland", si tratta del nome del programma usato per compilare l'eseguibile, è molto probabile che l'inizio del file si trovi prima di questo testo.

3- individuo il testo da tradurre e cerco prima o dopo un gruppo di COPPIE di byte che ha almeno uno dei due byte sempre uguale e tendenzialmente consecutivi: 2608, 6a08, 9908, ag08, 0309, 7709 ecc... Questi sono al 99% puntatori.

4- Mi sposto nel testo vicino da tradurre e cerco di capire la lunghezza, ovvero quando finisce un testo e ne inizia uno nuovo (come ad esempio per Kings of the beach, Calcolo quanti Byte dista l'inizio di "...WELCOME TO SUNNY SAN DIEGO" dall'inizio di "WELCOME TO CHICAGO"), trovato il valore cerco tra i puntatori precedenti se la differenza aritmetica tra due coppie consecutive corrisponde a quel valore.

5- trovato a quale puntatore è legato l'inizio di "...WELCOME TO SUNNY SAN DIEGO" posiziono il cursore e leggo la posizione assoluta, alla quale sottraggo poi il valore del puntatore trovato (invertendo la coppia in quanto little endian).

6- Il valore trovato è l'inizio del nostro file, il punto ZERO al quale tutti i puntatori di quel file fanno riferimento. A questo punto puoi procedere in due modi:
- Usare software avanzati come HEX WORKSHOP o ULTRAEDIT (che tu già usi) per impostare un template o una maschera che aiuti a definire un "PUNTO ZERO"
- Fare un backup del file ed Eliminare tutto quello che esiste PRIMA dell'inizio del file trovato e creare un nuovo file temporaneo di lavoro che iniziando effettivamente dove vogliamo avrà già tutti i punti del file assoluti e dunque coerenti con i puntatori.


Spero di essere stato chiaro, scrivi pure se qualcosa non ti torna.


--------------------
 

Reply to this topicStart new topic
1 utenti stanno leggendo questa discussione (1 visitatori e 0 utenti anonimi)
0 utenti:

 

Modalità di visualizzazione: Normale · Passa a: Lineare · Passa a: Outline


Versione Lo-Fi Oggi è il: 12th November 2026 - 21:03