Jump to content
Nokioteca Forum

Kastor Su N95 Fw30


 Share

Recommended Posts

  • Risposte 431
  • Created
  • Ultima Risposta

Top Posters In This Topic

Partire dalla tua patch e piazzarci sopra i byte che mi servono non e' proprio una questione di 30 secondi...

O almeno, io non riesco neppure lontanamente a farlo in 30 secondi, se tu ci riesci qui in allegato ci sono i byte che mi servono :crying_anim02:

gfxtransadapter.zip

ma no.. 30 secondi ci mette il telefono per applicare la patch..

per copiare i bit nella patch ci metti anche giorni..

anche se.. hai bisogno di "TUTTI" i byte di quel file? perchè tranquillamente posso copiarli TUTTI e incollarli nella patch con poche mosse..

in poche parole potrei crearti una patch che inserisca i byte di quel file li nel msa.exe

Link to comment
Condividi su altri siti

fatta.. la patch nel mio telefono funziona.. si applica in 5 secondi più o meno e parte.. subito verde.. i file dimostrano che funziona..

allego file dimostrazione + patch fw 31 + patch fw 30..

volendo posso aggiungere qualche riga in più piena di 00 00 00 00 per rendere più leggibile la cosa..

con sta patch si finisce in una riga con degli 00 00 00 00 e poi inizia la riga normale di musiceccecc.exe

P.S. se dovessero esserci problemi.. installate rompatcher più aggiornato perchè da me funziona da dio con la stringa di 32 byte.. sicchè.. siete solo voi ad avere sto problema..

la 30 non la posso provare, ma ho fatto la copia con la stessa procedura automatica, sicchè i byte devono essere giusti e completi..

se c'è un problema potrebbe riscontrarsi nell'ultima riga della patch.. all'inizio ho cancellato 4 byte finali e poi li ho rimessi aggiungendo 00 00 00 00

visto che non la posso provare.. potrebbero essere diversi i byte, anche se li ho presi dal file originale del 30.. sicchè.. a rigor di logica la patch 30 FUNZIONA.. se vi da problemi, è colpa del vs cell :lmaosmiley:

son 5 minuti che continuo a disattivarla e attivarla.. mai 1 rogna.. sicchè..

l'ho messa pure in autostart.. tutto ok

gfxtransadapter_patch_to_msa_fw_31.zip

gfxtransadapter_to_MusicShopApp_patch_fw30.zip

Modificato da uccaa
Link to comment
Condividi su altri siti

Ok, l'ha applicata senza fare una piega... :lmaosmiley: Finalmente!

Ora, bisognera' modificare il gfxtrans.dll per redirigere le chiamate verso la nuova locazione.

Pescando dal cell. la versione patchata di gfxtransadapter.dll e rilevando tramite IDA i nuovi indirizzi delle varie funzioni esportate, per poi aggiornarne i rifeirmenti in gfxtrans.dll

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

secondo me era un problema di indirizzi.. a fare le cose a mano poteva capitarvi di scrivere male l'indirizzo di ricerca della stringa.. invece così faccio le cose tutte in automatico.. con copia incolla in poche parole.. non tocco niente di mio..

se ti serve creare un'altra patch, ormai ho capito come si fa.. se mi posti i bit di modifica di gfxtrans.dll te li aggiungo alla patch di msa così abbiamo tutto in un unico blocco.. nella prima parte copia i byte su msa del gfxtrans fw 21, nella seconda modifica i byte di gfxtrans fw 30..

postami la roba che creo io in 5 min :lmaosmiley:

@ il.socio

ah ok.. sta patch ti serviva per lavorare con ida e selezionare quali parti ti servono per creare una seconda patch con i riferimenti e tutto compreso.. ora è chiaro.. :lmaosmiley:

Modificato da uccaa
Link to comment
Condividi su altri siti

Per creare le patch ho visto che ROMPatcher non rognoa se le fai di lunghezza massima 32 o 1. In tutti gli altri casi non è stabile la cosa. Dalle prove che avevo fatto in passato, gfxransadapter così integrato mantiene gli indirizzi così originali del fw 21. E se modifichi gfxtrans.dll con gli indirizzi vecchi il cell si pianta o meglio non riesce + a eseguire nulla.

Modificato da 95A31
Link to comment
Condividi su altri siti

Per creare le patch ho visto che ROMPatcher non rognoa se le fai di lunghezza massima 32 o 1. In tutti gli altri casi non è stabile la cosa. Dalle prove che avevo fatto in passato, gfxransadapter così integrato mantiene gli indirizzi così originali del fw 21. E se modifichi gfxtrans.dll con gli indirizzi vecchi il cell si pianta o meglio non riesce + a eseguire nulla.

ma da problemi solo a te sta cosa della lunghezza massima 32 o 1.. io ho fatto la patch con stringa 32byte e l'ho messa persino in autopatch.. attaccata e staccata 30 volte.. mai 1 rogna.. MAI una rogna.. MAI.. controlla la tua versione di rompatcher.. o controlla la tua patch.. avrai sicuramente errato qualcosa..

poi.. boh..il.socio.. prova a giocare un po' con la patch.. attivala e toglila 5 o 6 volte.. mettila in autostart e prova.. prova a vedere se ti da veramente sto problema he dichiara 95a31

p.s. la patch che ho fatto io, quella che hanno scaricato in 3 persone, ti funziona o crasha? solo per curiosità..

Modificato da uccaa
Link to comment
Condividi su altri siti

ma da problemi solo a te sta cosa della lunghezza massima 32 o 1.. io ho fatto la patch con stringa 32byte e l'ho messa persino in autopatch.. attaccata e staccata 30 volte.. mai 1 rogna.. MAI una rogna.. MAI.. controlla la tua versione di rompatcher.. o controlla la tua patch.. avrai sicuramente errato qualcosa..

poi.. boh..il.socio.. prova a giocare un po' con la patch.. attivala e toglila 5 o 6 volte.. mettila in autostart e prova.. prova a vedere se ti da veramente sto problema he dichiara 95a31

p.s. la patch che ho fatto io, quella che hanno scaricato in 3 persone, ti funziona o crasha? solo per curiosità..

ROMPatcher lo ho all'ultima versione.

No la tua non mi da problemi.

Il le patch le ho sempre fatte con il tool di Alex_N70.

Link to comment
Condividi su altri siti

Scusate l'intrusione...

Il problema è di ricollegare i vari spezzoni del file gfxtrans.dll, giusto?

Quindi in teoria non dovrebbe bastare caricare di volta in volta l'indirizzo dello spezzone successivo nel PC con "MOV PC, #indirizzo"? Se l'esecuzione della dll non è lineare bisognerebbe patchare anche gli indirizzi di tutti gli altri salti o sbaglio?

Link to comment
Condividi su altri siti

Dalle prove che avevo fatto in passato, gfxransadapter così integrato mantiene gli indirizzi così originali del fw 21.

Ho preso il musicshopapp.exe patchato dal cell, l'ho dato in pasto a IDA e finalmente ho capito questo tuo appunto sul fatto che mantiene gli indirizzi originali del fw21...

Questo e' dovuto al fatto che noi stiamo sovrascrivendo anche l'header dell'eseguibile.

Nell'header ci sono le informazioni relative alla locazione di memoria in cui si trova il codice (o meglio si dovrebbe trovare, visto che noi lo stiamo rilocando)... IDA utilizza le informazioni presenti nell'header per mostrare i vari indirizzi e per quanto sopra, da IDA risulta che il codice parte dalla vecchia locazione, anche se in realta' non e' cosi'...

Per visualizzare in IDA il codice nella nuova locazione, bisognerebbe evitare di patchare i primi 0x78 bytes che contengono appunto l'header dell'eseguibile...

Cosi' facendo si andranno pero' a perdere i riferimenti alle funzioni esportate perche' anch'esse si trovano nell'header... Per fare una cosa fatta bene, bisognerebbe sovrascrivere solo alcuni campi e lasciarne invariati altri, in modo che il nuovo eseguibile venga correttamente interpretato da IDA.

Per chi volesse approfondire, riporto qui di seguito il formato dell'header.

Stiamo sovrascrivendo iCodeAddress con il vecchio valore (vedere header), quindi IDA crede che il nostro codice si trovi ancora nella vecchia locazione...

	class TRomImageHeader
{
	public UInt32 iUid1;
	public UInt32 iUid2;
	public UInt32 iUid3;
	public UInt32 iUidChecksum;
	public UInt32 iEntryPoint;
	public UInt32 iCodeAddress;
	public UInt32 iDataAddress;
	public Int32 iCodeSize;
	public Int32 iTextSize;
	public Int32 iDataSize;
	public Int32 iBssSize;
	public Int32 iHeapSizeMin;
	public Int32 iHeapSizeMax;
	public Int32 iStackSize;
	public UInt32 iDllRefTable;		 // TDllRefTable
	public Int32 iExportDirCount;
	public UInt32 iExportDir;
	public SSecurityInfo iS = new SSecurityInfo();
	public TVersion iToolsVersion = new TVersion();
	public UInt32 iFlags;
	public UInt32 iPriority;
	public UInt32 iDataBssLinearBase;
	public UInt32 iNextExtension;	   // TRomImageHeader
	public UInt32 iHardwareVariant;
	public Int32 iTotalDataSize;
	public UInt32 iModuleVersion;
	public UInt32 iExceptionDescriptor;
}

  class SSecurityInfo
{
	public UInt32 iSecureId;
	public UInt32 iVendorId;
	public UInt32[] iCaps = new UInt32[2];
};

  class TVersion
{
	public byte iMajor;
	public byte iMinor;
	public UInt16 iBuild;
}

Per poter conoscere i nuovi indirizzi delle funzioni senza impazzire troppo con IDA ed header, ho realizzato questo piccolo programmino che dovrebbe permettere di ricalcolare quali sono le nuove locazioni di memoria per le varie funzioni supponendo di prendere un eseguibile da un FW e piazzarlo su un FW differente.

Remap.zip

Nel campo sorgente, selezionare l'eseguibile del vecchio FW, nel campo destinazione selezionare l'eseguibile da sovrascrivere e nella textbox dovrebbero comparire i nuovi indirizzi delle varie funzioni rimappate... Poi tramite editor hex, tocca aggiornare le chiamate usando i nuovi valori.

Il programmino da modo di selezionare solo gfxtransadapter.dll come sorgente e solo musicshopapp.exe come destinazione...

Per poter selezionare un qualsiasi file e' necessario piazzare in SRC\ i files di questo archivio (FW21)

FW21.ziped in DEST\ i files di quest'altro archivio (FW30)

FW30.zip entrambi gli archivi contengono una versione aggiornata di questi files

P.S.

Ho aggiornato il primo post del thread, se credete valga la pena inserire ulteriori informazioni o altri tool nel primo post, segnalatelo...

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

Ho appena notato che il programmino di Remap puo' anche essere utilizzato per verificare, con una buona confidenza, se nel passaggio da un FW ad un'altro un file e' stato modificato da Nokia oppure no...

Selezionando ad esempio gfxtrans.dll come sorgente (FW21) e selezionando gfxtrans.dll come destinazione (FW30), si ottiengono gli indirizzi delle funzioni di gfxtrans.dll del FW21 rimappate sul FW30... Se il risultato e' identico a gfxtrans.dll FW30 allora (con buona probabilita') Nokia non ha modificato gfxtrans.dll nel passaggio dal FW21 al FW30... viceversa, se qualcosa cambia, allora il file e' stato sicuramente modificato da Nokia nel passaggio da FW21 a FW30.

Domani smanetto ancora un pochino e vedo di automatizzare il tutto per tirare fuori la lista di files che sono stati modificati nel passaggio dal FW21 al FW30.

EDIT:

Aprendo gfxtrans.dll con IDA ho notato che alcuni accessi ai dati non avvengono tramite offset relativi, ma tramite riferimenti assoluti alla memoria, quindi temo che non ci sia modo per portare eseguibili da un fw ad un'altro... O meglio, il modo e' quello di controllare linea per linea e rimappare i riferimenti assoluti nella nuova locazione... poco fattibile!

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

Sto via tre giorni ma già il 9 sono di ritorno :rolleyes: non abbandono la discussione per nessun motivo anzi se riesco la seguo dal cellulare via umts :angel:

@se può darti una mano ci possiamo organizzare e dividere il lavoro di fix degli indirizzi assoluti e relativi tra i partecipanti al progetto (es. 30 righe a testa) :angel:

Link to comment
Condividi su altri siti

se avessi mezza idea su come fare lo farei.. :rolleyes:

p.s. controllando con remap e con i 2 file gfxtrans.dll (fw21 -> fw 30) è uscita sta lista di export

## EXPORTS ##

0X808055C9	GfxTransEffect::Deregister(CCoeControl_const_)_1
0X80805625	GfxTransEffect::Invalidate(CCoeControl_const_)_2
0X808055B1	GfxTransEffect::IsRegistered(CCoeControl_const_)_3
0X80805669	GfxTransEffect::SetDemarcation(CCoeControl_const___TRect_const&)_4
0X80805639	GfxTransEffect::SetDemarcation(CCoeControl_const___TPoint_const&)_5
0X80805699	GfxTransEffect::SetDemarcation(CCoeControl_const___CCoeControl_const___TRect_const&)_6
0X808056B5	GfxTransEffect::SetDemarcation(TVwsViewId_const&__CCoeControl_const___TRect_const&)_7
0X80805681	GfxTransEffect::SetDemarcation(TVwsViewId_const&__TRect_const&)_8
0X80805651	GfxTransEffect::SetDemarcation(TVwsViewId_const&__TPoint_const&)_9
0X80805701	GfxTransEffect::End(CCoeControl_const_)_10
0X80805735	GfxTransEffect::Abort(CCoeControl_const_)_11
0X80805749	GfxTransEffect::Abort()_12
0X808056D1	GfxTransEffect::Begin(CCoeControl_const___unsigned_int)_13
0X808056E9	GfxTransEffect::BeginLC(CCoeControl_const___unsigned_int)_14
0X808055F5	GfxTransEffect::GetHints(CCoeControl_const_)_15
0X80805595	GfxTransEffect::Register(CCoeControl_const___TUid__int)_16
0X80805579	GfxTransEffect::Register(CCoeControl_const___TVwsViewId_const&__TUid)_17
0X808055DD	GfxTransEffect::SetHints(CCoeControl_const___unsigned_int)_18
0X80805769	GfxTransEffect::Enable()_19
0X80805759	GfxTransEffect::Disable()_20
0X8080560D	GfxTransEffect::SetHints(CCoeControl_const___TUid)_21
0X80805779	GfxTransEffect::IsEnabled()_22
0X808057BB	GfxTransEffect::BeginGroup()_23
0X8080583D	GfxTransEffect::EndDrawItem(CCoeControl_)_24
0X80805813	GfxTransEffect::BeginDrawItem(CCoeControl___unsigned_int__TUid__TRect&__TRect___TRect_)_25
0X80805889	GfxTransEffect::EndFullScreen()_26
0X80805899	GfxTransEffect::AbortFullScreen()_27
0X80805851	GfxTransEffect::BeginFullScreen(unsigned_int__TRect_const&)_28
0X80805869	GfxTransEffect::BeginFullScreen(unsigned_int__TRect_const&__unsigned_int__TDesC8_const&)_29
0X8080578B	GfxTransEffect::SetEndDemarcation(CCoeControl_const___TRect_const&)_30
0X808057E3	GfxTransEffect::SetTransitionData(unsigned_int__TDesC8_const&)_31
0X808057A3	GfxTransEffect::SetBeginDemarcation(CCoeControl_const___TRect_const&)_32
0X808058A9	GfxTransEffect::SetTransitionObserver(MGfxTransEffectObserver_)_33
0X808057FB	GfxTransEffect::RegisterDrawItemControl(CCoeControl___TUid)_34
0X808057CF	GfxTransEffect::EndGroup(int)_35
0X8080571D	GfxTransEffect::NotifyExternalState(int__TDesC8_const_)_36

guardate come inizia la stringa.

eh.. non so se si sapeva già, anche se lo credo, ma mancano determinate funzioni che, fino a prova contraria, servono per l'attivazione degli effetti..

indi per cui bisogna assolutamente implementare gfxtrans.dll del fw 21 sul 30..

p.s. uno spoiler decente no eh?

Modificato da uccaa
Link to comment
Condividi su altri siti

@se può darti una mano ci possiamo organizzare e dividere il lavoro di fix degli indirizzi assoluti e relativi tra i partecipanti al progetto (es. 30 righe a testa) :rolleyes:

Non credo di aver reso l'idea... Si tratta di un lavoro improponibile.

Esistono 2 tipologie di file, quelli che nel passaggio FW21->FW30 sono state modificate da Nokia con aggiunta / rimozione codice / bug-fixing e quant'altro, ed altri file che invece sono rimasti inalterati.

Ora, supponeniamo di lavorare su un file che non e' stato modificato (es: gfxtrans.dll) e di volerlo portare dal FW21 al FW30... Non e' banale arrivare a modificare i dati del FW21, per allinearli a quelli del FW30 cosi' da ottenere un file identico a quello del FW30...

Seguimi sull'atto pratico:

- FINGI di non avere a disposizione gfxtrans.dll del FW30 e di voler prendere e portare quello del FW21 sul FW30

- Compi questa operazione di porting e se alla fine riesci ad ottenre un file identico a quello di gfxtrans.dll del FW30, allora sei in grado di portare un file che NON e' stato modificato da Nokia.

Questo e' un prerequisito indispensabile per poter pensare di portare un file che invece e' stato modificato da Nokia nel passaggio FW21->FW30...

Il problema e' che io, personalmente, fallisco gia' nel porting di un file non modificato... quindi e' per me impossibile portarne uno che invece e' stato modificato!

Se questo tipo di prova mi fosse venuta in mente all'inizio, ci saremmo risparmiati kilometri di posts... Ma non avrei imparato un sacco di cose! :angel:

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

in poche parole, in un italiano appetibile, te vorresti testare l'operazione facendo il porting di un file fw 21 al posto dello stesso file, praticamente uguale, nel fw 30, variandone le stringhe con i relativi richiami..

Nel caso ci riuscissi, potresti passare allo scalino dopo ed importare anche funzioni mancanti..

ma scusa.. ora non ho in mano ida e non saprei come usarlo.. però.. se i richiami sono assoluti, e il file del fw 21 è == a quello del fw 30, anche i richiami saranno uguali, sicchè, se il file non è stato modificato, non lo è stato..

boh :rolleyes:

Link to comment
Condividi su altri siti

eh.. non so se si sapeva già, anche se lo credo, ma mancano determinate funzioni che, fino a prova contraria, servono per l'attivazione degli effetti..

indi per cui bisogna assolutamente implementare gfxtrans.dll del fw 21 sul 30..

A quali funzioni fai riferimento e perche' credi che manchino?

Da quei file risulta che tutte le funzioni di gfxtrans.dll del FW21 sono presenti anche nel FW30...

Link to comment
Condividi su altri siti

in poche parole, in un italiano appetibile, te vorresti testare l'operazione facendo il porting di un file fw 21 al posto dello stesso file, praticamente uguale, nel fw 30, variandone le stringhe con i relativi richiami..

In poche parole, io non sono in grado di fare il porting di un file non modificato, quindi e' inutile che provi a farlo per un file che invece e' stato modificato.

Finche' nessuno sara' in grado di fare il porting di un file non modificato, e' (imho) inutile procedere tramite patch...

ma scusa.. ora non ho in mano ida e non saprei come usarlo.. però.. se i richiami sono assoluti, e il file del fw 21 è == a quello del fw 30, anche i richiami saranno uguali, sicchè, se il file non è stato modificato, non lo è stato..

I richiami non saranno uguali perche' nel FW30 quel file e' collocato a partire da locazione di memoria differente

CODEADDRESS: 0X80805508

Mentre nel FW21, lo stesso file si trova nella locazione di memoria

CODEADDRESS: 0X807F2878

quindi i riferimenti assoluti che contiene, puntano a del codice che fa parte di questa zona di memoria, ma che non sono ovviamente validi sul FW30.

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