Jump to content
Nokioteca Forum

Guida Completa Alla Creazione Di Patch Per Rompatcher


Alex_N70
 Share

Recommended Posts

Guida completa alla creazione di patch per ROMPatcher

Per prima cosa chiariamo come funziona ROMPatcher: questo programma sostituisce una sequenza di byte (ad un certo indirizzo di memoria o in un file della ROM) con un'altra sequenza di byte delle stesse dimensioni. Questo permette di modificare alcuni comportamenti dei programmi modificando opportunamente i file .exe/.dll che li compongono. Le modifiche sono volatili e spariscono al riavvio del cellulare.

Vediamo come si scrivono le sequenze di byte (chi conosce la notazione esadecimale e la struttura dei file può saltare questa parte).

Tutti i file dei PC e dei cellulari sono fatti da una sequenza di byte, cioè gruppi di 8 bit, ciascuno dei quali può valere 1 o 0. Secondo l'aritemtica in base due, ogni byte può assumere 2x2x2x2x2x2x2x2=256 valori diversi indicati con i numeri da 0 a 255. Per rappresentarli si preferisce usare la notazione in base 16 (esadecimale) in cui 2 cifre (con valori da 0 a 9 e poi a=10, b=11,... f=15) rappresentano un byte.

Ad esempio un file composto da 4 byte che valgono (in ordine) 99, 105, 97 e 111, aperto in un editor esadecimale mostra i valori 63, 69, 61 e 6f

screenshot0006ff7.jpg

sulla colonna a sinistra compare la parola "ciao", perchè la codifica ASCII associa a questi 4 numeri le lettere c, i, a, o.

Un uso tipico di ROM Patcher è quello di trovare all'interno di un file .exe/.dll, il nome di un file situato in z:, e sostituire quella "z" con "c" o "e" per far leggere quel file da un'altro percorso (per esempio, un file modificato da noi :lol: )

screenshot0007pm3.jpg

nello screen è evidenziata la parte "z.:" che potremmo voler sostituire con "c.:", allora nella patch indicheremo con "7a003a" i byte da sostituire e con "63003a" i byte ba mettere al loro posto.

Per creare una patch bisogna indicare:

- il nome di un file e/o un indirizzo di memoria

- i byte che ci si aspetta di trovare in quel file/indirizzo

- i byte con cui sostituirli.

Se i byte trovati nel nel file/indirizzo non sono quelli previsti la patch non viene applicata (compare una x rossa in ROMPatcher).

Qualche cenno sulla sintassi da usare:

- i nomi dei file si indicano senza la lettera dell'unità (si sottintende la z:), con percorso, nome ed estensione. per esempio "sys\bin\phone.exe"

- gli indirizzi si indicano con numeri esadecimali, senza 0x davanti e con 8 cifre. per esempio "c0000148"

- i byte si indicano con i loro valori esadecimali, senza spazi tra uno e l'altro

I file delle patch sono normali file di testo con estensione .rmp e sono strutturati in questo modo:

- la prima riga è quella che viene visualizzata selezionando "patch info" in ROMPatcher

- le altre righe che iniziano con ; sono i commenti

- le righe che non iniziano col nome uno dei tre metodi (abs:, rel: e snr:) vengono ignorate

- le righe che iniziano col nome uno dei tre metodi (abs:, rel: e snr:) indicano i dati da modificare e dove trovarli. ognuna di queste righe indica una modifica da compiere

vediamo ora i tre metodi di patch:

METODO ASSOLUTO (abs:)

sostituisce i dati ad un indirizzo di memoria assoluto.

sintassi:

abs:<indirizzo>:<dati originali>:<dati modificati>

per esempio:

	   Disable caps on FP1
   abs:c0000148:1e:10

permette di disattivare le capabilities (esattamente come CapsOff)

se le capabilities sono già disattivate ROMPatcher trova già il valore "10" mentre si aspetterebbe di trovare "1e" e la patch non si attiva

lo svantaggio di questo metodo è che non è facile trovare indirizzi assoluti, io in pratica conosco solo quello dell'esempio (diverso per preFP1 e FP1). dovrebbe essere possibile con strumenti da sviluppatore come CodeWarrior e Carbide.c++.

METODO RELATIVO (rel:)

sostituisce i dati ad un preciso indirizzo di memoria all'interno di un file.

sintassi:

rel:<nome file>:<indirizzo>:<dati originali>:<dati modificati>

l'indirizzo di memoria si trova facilmente aprendo il file in un hex editor, guardando nella colonna più a sinistra e aggiungendo al della riga quello della colonna in cui si trova il primo byte da modificare (il numero delle colonne parte da 0 e si conta sempre in base 16)

screenshot0008do2.jpg

nell'immagine l'indirizzo del byte segnato, che ha valore "7a", è 032070 + 4 = 032074

lo svantaggio di questo metodo è che in versioni diverse dei file i dati che si vogliono modificare possono venire spostati, quindi può essere necessario scrivere patch diverse per diversi modelli di cellulare o versioni di firmware.

Ad esempio, questa patch cambia il percorso in cui cercare swipolicy.ini da z: a c:

 Change swipolicy.ini path
   rel:sys\bin\securitymanager.dll:000036fc:7a:63

METODO TROVA E SOSTITUISCI (snr: -> search'n'replace)

agisce nel modo che ci è più familiare, cioè scorre tutto il file fino a quando trova i dati che si vogliono modificare.

sintassi:

snr:<nome file>:<dati originali>:<dati modificati>

lo svantaggio di questo metodo è che se i dati da modificare sono pochi (uno o alcuni byte), c'è il rischio che la stessa sequenza di dati si trovi in un altro punto del file, e quindi la sostituzione avvenga in un altro punto rispetto a quello voluto con risultati inaspettati. per evitarlo basta aggiungere a entrambi i blocchi di dati alcuni dei byte seguenti: anche se sono identici riducono la probabilità di trovare sequenze analoghe nello stesso file.

la patch dell'esempio precedente, riscritta con questo metodo, è questa:

 Change swipolicy.ini path
   snr:sys\bin\securitymanager.dll:7a003a005c00730079007300740065006d005c0064006100740061005c007300770069007000
6f006c006900630079002e0069006e006900:63003a005c00730079007300740065006d005c0064006100740061005c007300770069007000
6f006c006900630079002e0069006e006900

questo è tutto, ora vi serve solo qualcosa di utile da modificare. se servono chiarimenti o esempi su qualche punto sono a disposizione ;)

Modificato da Il.Socio
  • Mi Piace 1
Link to comment
Condividi su altri siti

Forse qualche esempio con degli screen su come si realizza una patch renderebbe le cose più semplici. Spiega magari cosa s'intende per "indirizzo" e con "dati" e come si trovano. E fai un'esempio di questa procedura "l'indirizzo di memoria si trova facilmente aprendo il file in un hex editor, guardando nella colonna più a sinistra, aggiungendo al numero corrispondente alla riga quello della colonna in cui si trova il primo byte da modificare, e infine sottraendo 1 (con l'accortezza di contare sempre in base 16)" magari con degli screen esemplificativi. :lol:

Link to comment
Condividi su altri siti

  • 1 mese dopo...
  • 9 mesi dopo...
  • 2 mesi dopo...
Molto dettaliata, ma un po' difficile da capire per chi non se ne intende :spacca:

io parlavo di "reverse engineering" per i programmi symbian !!!

che uso???

non ci credo che vai a leggere l'hex!!!! a parte qualche stupidaggine...

TENGO A PRECISARE CHE NON MI SERVE PER HACK MA SOLO PER MOD PERSONALI A PROGRAMMI FREE(CHE NON CONDIVIDERò A MENO CHE NON SIA D'ACCORDO IL CREATORE DEL PROGRAMMA STESSO)E PER CONOSCIENZA PERSONALE

Modificato da gionniweb
Link to comment
Condividi su altri siti

  • 2 mesi dopo...
  • 7 mesi dopo...

Cosa c'e' di confusionario in quel thread?

nn si capisce molto bene tutta la storia dei byte da sostituire,per esempio ci sono i punti su come creare la patch dove dice

- i byte che ci aspetta di trovare in quel file/indirizzo

- i byte con cui sostituirli.

già ma io come faccio a sapere quali byte aspettarmi visto che il file a cui mi voglio riferire nn so come aprirlo e vederne i byte da modificare?

Link to comment
Condividi su altri siti

Ti riporto dalla guida:

nello screen è evidenziata la parte "z.:" che potremmo voler sostituire con "c.:", allora nella patch indicheremo con "7a003a" i byte da sostituire e con "63003a" i byte ba mettere al loro posto.

In quel caso i byte che ci si aspetta di trovare sono 7A 00 3A

Il fatto che esista una guida per realizzare patch, non significa che chiunque sia in grado di mettersi li e farlo.

Realizzare patch non puo' essere insegnato con un semplice tutorial passo-passo, fai cosi', fai cosa' in stile flashing-for-dummies.

Questa guida serve soltanto come riferimento per sapere qual'e' la sintassi da utilizzare per poter stilare le patch, ma il lavoro piu' grande e' quello di analisi e ricerca che viene prima.

Per poter realizzare le patch piu' semplici e' necessario avere perlomeno dimestichezza con l'editor hex.

Per le patch piu' serie, e' indispensabile avere conoscenze anche di programmazione e assembly arm.

Modificato da Il.Socio
Link to comment
Condividi su altri siti

  • 9 mesi dopo...

ciao a voi del forum, io mi son messo al lavoro per creare una patch per far si che la cache sia in E, ho modificato il txt che da questo comando attraverso una patch ma non funziona, questo è quello che ho scritto nella patch

rel:private\10202be9\101F8557.txt:00000814:43:45

rel:private\10202be9\101F8557.txt:00000838:43:45

rel:private\10202be9\101F8557.txt:0000085C:43:45

in pratica devo solo sostituire 3 C con 3 E

secondo voi cè un modo attraverso una patch senza usare la c2z che mi da problemi

volevo in pratica modificare solo dei valori come spiegato nel primo post

grazie

Link to comment
Condividi su altri siti

l'uso di rompatcher mi pare inutile per questo tipo di lavoro.

e ti spiego perche:

partiamo dal fatto che tu vuoi modificare un file che si trova nel cen rep

Per modificare questo tipo di file è sufficiente mettere il proprio file modificato in C:\private\10202be9.

Infatti i file presenti in C:\private\10202be9 hanno priorita su quelli che si trovano nello stesso path ma in Z.

quindi per capirci se il file 101F8557.txt che sta in Z ha impostata la cache in E e tu inserisci in C lo stesso file ma con cambiata la stringa che imposta la cache (passandola da E in C), la cache viene effettivamente spostata, perche viene letto prima il file in C. se questo non è trovato lo legge in Z.

Quindi le modifiche che tu apporti alla cartella c:\private\10202be9 hanno effetto senza l'ausilio di altre cose.

Detto questo, a che ti serve rp?

se ti vuoi creare una patch evidentemente hai rp gia installato.

quindi ti basta semplicemente attivare la patch open4all per avere accesso alle cartelle e file di sistema.

dopo di che con un esplora risorse come xplore vai nella cartella c:\private\10202be9 e li ci copi il tuo file 101F8557.txt modificato

dopo di che puoi anche togliere la patch open4all e avrai le tue belle modifiche fatte senza alcuno sforzo e senza mantenere patch in esecuzione

ovviamente l'esempio che ti ho fatto io ha le lettere messe al contrario di come le vuoi tu :)

considera che questo è lo stesso sistema che è alla base di alcune mod che sono state realizzate, tipo la fusion mod (da controllare se l'opzione funziona realmente)

questa ad esempio non è altro che un sis che installato va a copiare in c:\private\10202be9 il file che setta la cache secondo le specifiche dette dal creatore del sis.

e la modifica ha effetto senza che siano installate altre patch per quanto detto prima.

l'unica cosa di cui necessita è la certificazione del sis, o in alternativa l'hack per essere installato :P

non so se sono stato chiaro

Modificato da Darkangel
Link to comment
Condividi su altri siti

quello che ti ho descritto io è un comportamento dato dal sistema operativo.

per cui, se nessuno influenza quel comportamento lui di default cerca prima i file in C e poi in Z per quanto riguarda il cen rep

e per questo motivo questa modifica è permanente in termini di efficacia senza usare patch o altro

se puoi vuoi cambiare ancora il comportamento ti basta rimodificare quel file in C

per altre cose invece, dove i file sono cercati esclusivamente in Z è necessario cambiare questo comportamento tramite l'ausilio di altri strumenti, come rompatcher e la c2z

e questo è un comportamento che tu inibisci al sistema tramite rp.

questo ti spiega perche se non usi rp e la c2z la modifica non ha visibilita. perche il sistema operativo segue il suo comportamento originale

in linea generale vedila cosi:

le modifiche che tu fai con rp sono temporanee all'esecuzione della patch.

quindi se tu modifichi il file della cache con rp per dire, le sue modifiche avranno effetto finche la patch che lo modifica è attiva. come la disattivi tutto torna come prima. questo perche le modifiche non riguardano il file fisico in C che se lo vai a vedere è sempre lo stesso

Per prima cosa chiariamo come funziona ROMPatcher: questo programma sostituisce una sequenza di byte (ad un certo indirizzo di memoria o in un file della ROM) con un'altra sequenza di byte delle stesse dimensioni. Questo permette di modificare alcuni comportamenti dei programmi modificando opportunamente i file .exe/.dll che li compongono. Le modifiche sono volatili e spariscono al riavvio del cellulare.

Modificato da Darkangel
Link to comment
Condividi su altri siti

Credo che in questo caso il comportamento del Cell sia che legga solo in z quindi attraverso la c2z legge quello in c e funziona.ho provato copiando il file modificato senza patch attive ma non va.non mi puoi spiegare come modificare quella parte di txt presente in z attraverso una patch o magari creare una specie di c2z valida solo per quel file e non per tutti

Link to comment
Condividi su altri siti

dopo che hai copiato il file in C, hai riavviato il cell?

Hai controllato che nella cartella persist presente sempre in c:\private\10202b39 non ci sia lo stesso file con estensione cre?

vedi anche qui

https://www.nokioteca.net/home/forum/index.php/topic/116648-cache-directory-come-portarla-da-c-ad-e/

Modificato da Darkangel
Link to comment
Condividi su altri siti

ciao, ho provato, avevo già il file in C modificato, ho riavviato ma la cache rimane sempre in C, il bello è che questo txt è già modificato ma parzialmente, infatti le E sono già impostate nei percorsi ma la guida che mi hai linkato è incompleta perchè bisogna modificare 3 E alla riga 0xF, se no non funziona, una patch non si può creare? o fare una specie di c2z ma più limitativa ad un solo file? ah.. il file cre non c'è, che significa?

navigando mi occupa in poco tempo ben 15mb in C

Modificato da bstard
Link to comment
Condividi su altri siti

Please sign in to comment

You will be able to leave a comment after signing in



Accedi Ora
 Share

×
×
  • Crea Nuovo...

Informazione Importante

Questo sito utilizza i cookie per analisi, contenuti personalizzati e pubblicità. Continuando la navigazione, accetti l'utilizzo dei cookie da parte nostra | Privacy Policy