Benvenuto Visitatore(Log In|Registrati)
![]() ![]() |
4 Jun 2023, 14:57
Messaggio
#1
|
|
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. -------------------- |
|
|
|
![]() ![]() |
| Versione Lo-Fi | Oggi è il: 12th November 2026 - 21:03 |