Jump to content
Nokioteca Forum

Kastor Su N95 Fw30


 Share

Recommended Posts

Ho pensato di creare questo thread dedicato allo studio ed alla ricerca di un modo per poter attivare gli effetti Kastor su N95 fw30.

La base di partenza e' il lavoro fatto da Alex su N95 fw20 e fw21

Il primo post di questo thread sara' aggiornato di volta in volta per includere in un unico punto l'attuale stato di avanzamento delle ricerche, cosi' sara' sempre possibile stare al passo con gli attuali progressi, trascurando completamente il caos che verra' a crearsi all'interno del thread...

Preciso che il seguente, non e' esclusivamente frutto del mio lavoro, ma di tutti coloro che si sono adoperati per fornire dump, files, tests, analisi ed informazioni varie.

Alla chiusura di tutto, tireremo giu' i dovuti credits... ;)

- Stato Aggiornato il 5 / Agosto

Info Generali e Files Utili

Qui ci sono i files contenenti gli indirizzi delle varie funzioni importate / esportate per ciascun eseguibile della rom.

Indirizzi FW21

Indirizzi FW30

A differenza dei files .idc in cui gli indirizzi sono stati leggermente modificati per far contento IDA, questi sono nudi e crudi cosi' per come sono in rom, quindi possono essere usati per effettuare il remapping delle funzioni nel porting di un eseguibile da un FW ad un'altro.

Remap: Questo e' un programma che puo' tornare utile per effettuare il remapping delle funzioni e basa il suo funzionamento sugli archivi appena citati.

Qui c'e' un confronto Compare.txt tra i files presenti nel FW21 con quelli presenti nel FW30.

Da notare l'assenza dei seguenti files nel FW30

sys\bin\tfxlistbox.dll

sys\bin\tfxserver.dll

sys\bin\tfxserveranim.dll

sys\bin\tfxserverclient.dll

sys\bin\TfxSrvPlugin.dll

sys\bin\transitionserver.dll

Aprendo un eseguibile con IDA, ci si ritrovera' di fronte ad un sacco di riferimenti "non risolti", per poter avere dei riferimenti significativi e' possibile utilizzare i files IDC allegati piu' in basso.

I file .idc servono per risolvere i vari import/export presenti in un eseguibile nel rispettivo nome della funzione.

E' sufficiente aprire con IDA l'eseguibile e poi aprire il rispettivo file .idc e tutti quanti gli import/export saranno risolti.

I file .idc possono servire anche per analizzare le varie dipendenze.

Aprendo un file .idc con blocco note, ad un certo punto si vedranno tre linee vuote, significa che quelle che seguono da li in poi sono le funzioni esportate dalla dll

Una guida su architettura e istruzioni Assembly ARM visualizzate da IDA

Una reference online per il set di istruzioni Assembly ARM

Analisi FW30

Questo e' il database di IDA contenente i files psln.exe pslnengine.dll gfxtrans.dll gfxtransadapter.dll

Qui ci sono i file .idc del FW30

Le locazioni che iniziano con il carattere "_" e con il carattere "." sono quelle che ho identificato come significative per lo scopo.

Da una analisi del file psln.exe decompilato, si e' notato che la comparsa del menu' "Effetti" e' strettamente legata alla feature num. 0x666, valore che e' presente nel file staticfeatures.dll del fw21 ma che non e' presente nello staticfeatures.dll del fw30

Utilizzando questo pacchetto, la voce "Effetti" torna visibile:

sys\bin\staticfeatures.dll <-- file proveniente da FW21 in cui e' presente la feature 0x666

sys\hash\staticfeatures.dll <-- hash sha-1 calcolato sul file sys\bin\staticfeatures.dll

Purtroppo pero', manca ancora qualche "pezzo" perche' nonostante c2z.rmp ed KastorUI.rmp quando si seleziona "attiva" compare un errore -1 (KErrNotFound).

Per vedere l'errore e' necessario creare la directory c:\Resource\ErrRd\

Quando si seleziona "Effetti > Attiva" avvengono queste operazioni:

Psln.exe richiama la funzione .pslnengine_41_SetEffects (di pslnengine.dll) per richiedere l'attivazione degli effetti.

Questa funzione deve restituire R0 = 0

A sua volta la .pslnengine_41_SetEffects richiama la GfxTransEffect_Enable (di gfxtrans.dll) per richiedere l'attivazione degli effetti.

Questa funzione deve restituire R7 = 0

Da quel che ho capito, dentro alla funzione GfxTransEffect_Enable all'indirizzo 0x8080576A viene fatta una call a 0x80805A7A che al momento restituisce un valore "errato".

Dentro 0x80805A7A ho trovato il riferimento al UID 0x102822A6 (che nel decompilato ho indicato con _MagicValue)

Pacioccando con RomPatcher ho potuto verificare che all'indirizzo 0x8080576A se invece di effettuare la call ci si limita ad piazzare 0 in R7, non viene segnalato nessun errore in fase di attivazione degli effetti... Tuttavia, la gestione degli effetti non si attiva ( perche' evidentemente quella call. a qualcosa serve :) )

La funzione 0x80805A7A si occupa di recuperare dal TLS (Thread Local Storage) l'istanza singleton http://wiki.forum.nokia.com/index.php/Impl...s_in_Symbian_OS della classe dedicata alla gestione degli effetti (identificata con UID _MagicValue e contenuta sempre in gfxtrans.dll).

(In riferimento all'esempio su wiki, KMyTlsHandle nel nostro caso vale _MagicValue)

Dopo averne recuperato l'istanza, ne chiama qualche metodo in base ai parametri che sono stati passati alla funzione e restituisce il valore di ritorno.

Se non si chiama questa funzione, non sara' richiamato neppure il metodo appropriato per l'attivazione degli effetti.

Il costruttore presente all'indirizzo 0x808058BC si occupa della creazione dell'istanza relativa a _MagicValue e del suo inserimento nel TLS

Qui c'e' la lista completa delle dipendenze dei vari eseguibili presenti nella rom. dependencies.zip

Analisi FW21

File contenente il dump della rom

Qui ci sono i file .idc del FW21

Il file staticfeatures.dll contiene il valore 0x666 necessario per la comparsa della voce di menu' "Effetti Tema"

Nel FW21 sono state identificate queste dipendenze:

TfxSrvPlugin.dll usa TransitionServer.dll

TfxSrvPlugin.dll sembra essere caricata "al volo", da qualcuno, ma non si sa ancora da chi...

-

10281F8D.DLL usa TfxListBox.dll

10281F8D.DLL sembra essere caricata "al volo", da qualcuno, ma non si sa ancora da chi...

-

TfxServerAnim.dll usa TfxServer.dll

TfxServerAnim.dll usa TfxServerClient.dll

TfxServerAnim.dll sembra essere caricata "al volo", da qualcuno, ma non si sa ancora da chi...

-

GfxTransAdapter.dll usa TfxServerClient.dll

La relazione tra GfxTransAdapter.dll e GfxTrans.dll non mi e' ancora ben chiara. Presumo che GfxTransAdapter.dll implementi alcune funzioni definite in GfxTrans.dll

-

10281F7F.DLL usa TfxServerClient.dll

TfxServerAnim.dll sembra essere caricata "al volo", da qualcuno, ma non si sa ancora da chi...

-

Eikcoctl.dll usa GfxTrans.dll

-

Avkon.dll usa GfxTrans.dll

-

Logs.exe usa GfxTrans.dll

-

Phone.exe usa GfxTrans.dll

-

PhoneBook.exe usa GfxTrans.dll

-

PslnEngine.dll usa GfxTrans.dll

-

Qui c'e' la lista completa delle dipendenze dei vari eseguibili presenti nella rom. dependencies21.zip

Log generato dal DumpROM

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

  • Risposte 431
  • Created
  • Ultima Risposta

Top Posters In This Topic

Non e' un problema :thumbdown: piu' gente ci mette mano, meglio e'...

Le funzioni le trovi tutte elencate nel file gfxtrans.dll.idc

Quelle dopo le tre linee vuote sono quelle esportate, quelle che si trovano prima sono quelle che vengono importate e che risiedono nelle altre dll...

Questo e' quello del FW21:

#define UNLOADED_FILE   1
#include <idc.idc>
static main(void) {
MakeCode(0X807F50B8);
MakeName(0X807F50B8,"TPoint::operator__(TPoint_const&)_1023");
MakeCode(0X807F50C0);
MakeName(0X807F50C0,"TPoint::operator__(TPoint_const&)_1025");
MakeCode(0X807F50C8);
MakeName(0X807F50C8,"RRegion::Close()_1139");
MakeCode(0X807F50D0);
MakeName(0X807F50D0,"RRegion::RRegion()_1146");
MakeCode(0X807F50D8);
MakeName(0X807F50D8,"TRegion::Clear()_1184");
MakeCode(0X807F50E0);
MakeName(0X807F50E0,"TRegion::AddRect(TRect_const&)_1188");
MakeCode(0X807F50E8);
MakeName(0X807F50E8,"RArrayBase::At(int)_const_1507");
MakeCode(0X807F50F0);
MakeName(0X807F50F0,"RArrayBase::Count()_const_1510");
MakeCode(0X807F50F8);
MakeName(0X807F50F8,"RPointerArrayBase::At(int)_const_1590");
MakeCode(0X807F5100);
MakeName(0X807F5100,"RPointerArrayBase::Find(void_const_)_const_1591");
MakeCode(0X807F5108);
MakeName(0X807F5108,"RPointerArrayBase::Count()_const_1593");
MakeCode(0X807F5110);
MakeName(0X807F5110,"TUid::operator__(TUid_const&)_const_1601");
MakeCode(0X807F5118);
MakeName(0X807F5118,"TRect::Intersects(TRect_const&)_const_1646");
MakeCode(0X807F5120);
MakeName(0X807F5120,"TRect::operator__(TRect_const&)_const_1655");
MakeCode(0X807F5128);
MakeName(0X807F5128,"TSize::operator__(TSize_const&)_const_1657");
MakeCode(0X807F5130);
MakeName(0X807F5130,"TSize::operator__(TSize_const&)_const_1660");
MakeCode(0X807F5138);
MakeName(0X807F5138,"TPoint::operator_(TPoint_const&)_const_1749");
MakeCode(0X807F5140);
MakeName(0X807F5140,"TRegion::operator[](int)_const_1833");
MakeCode(0X807F5148);
MakeName(0X807F5148,"RBuf8::Close()_2014");
MakeCode(0X807F5150);
MakeName(0X807F5150,"CleanupStack::Pop()_205");
MakeCode(0X807F5158);
MakeName(0X807F5158,"User::MarkCleanupStack()_2060");
MakeCode(0X807F5160);
MakeName(0X807F5160,"User::UnMarkCleanupStack(TTrapHandler_)_2061");
MakeCode(0X807F5168);
MakeName(0X807F5168,"CleanupStack::PushL(TCleanupItem)_207");
MakeCode(0X807F5170);
MakeName(0X807F5170,"XLeaveException::GetReason()_const_2082");
MakeCode(0X807F5178);
MakeName(0X807F5178,"CBase::Extension_(unsigned_int__void_&__void_)_2123");
MakeCode(0X807F5180);
MakeName(0X807F5180,"CBase::_CBase()_2125");
MakeCode(0X807F5188);
MakeName(0X807F5188,"RArrayBase::Close()_46");
MakeCode(0X807F5190);
MakeName(0X807F5190,"RArrayBase::Reset()_47");
MakeCode(0X807F5198);
MakeName(0X807F5198,"RPointerArrayBase::Close()_470");
MakeCode(0X807F51A0);
MakeName(0X807F51A0,"RPointerArrayBase::Reset()_471");
MakeCode(0X807F51A8);
MakeName(0X807F51A8,"RPointerArrayBase::Append(void_const_)_472");
MakeCode(0X807F51B0);
MakeName(0X807F51B0,"RPointerArrayBase::Remove(int)_474");
MakeCode(0X807F51B8);
MakeName(0X807F51B8,"RArrayBase::Append(void_const_)_48");
MakeCode(0X807F51C0);
MakeName(0X807F51C0,"RPointerArrayBase::RPointerArrayBase()_481");
MakeCode(0X807F51C8);
MakeName(0X807F51C8,"RArrayBase::Remove(int)_50");
MakeCode(0X807F51D0);
MakeName(0X807F51D0,"RArrayBase::RArrayBase(int)_55");
MakeCode(0X807F51D8);
MakeName(0X807F51D8,"User::Panic(TDesC16_const&__int)_650");
MakeCode(0X807F51E0);
MakeName(0X807F51E0,"User::AllocZ(int)_652");
MakeCode(0X807F51E8);
MakeName(0X807F51E8,"User::AllocZL(int)_654");
MakeCode(0X807F51F0);
MakeName(0X807F51F0,"User::Invariant()_669");
MakeCode(0X807F51F8);
MakeName(0X807F51F8,"TRect::Intersection(TRect_const&)_822");
MakeCode(0X807F5200);
MakeName(0X807F5200,"TRect::TRect(TPoint_const&__TSize_const&)_839");
MakeCode(0X807F5208);
MakeName(0X807F5208,"TRect::TRect()_842");
MakeCode(0X807F5210);
MakeName(0X807F5210,"CCoeEnv::FindStatic(TUid)_137");
MakeCode(0X807F5218);
MakeName(0X807F5218,"CCoeEnv::Static(TUid)_181");
MakeCode(0X807F5220);
MakeName(0X807F5220,"CCoeControl::OwnsWindow()_const_254");
MakeCode(0X807F5228);
MakeName(0X807F5228,"CCoeControl::PositionRelativeToScreen()_const_273");
MakeCode(0X807F5230);
MakeName(0X807F5230,"CCoeControl::Rect()_const_276");
MakeCode(0X807F5238);
MakeName(0X807F5238,"CCoeControl::Size()_const_277");
MakeCode(0X807F5240);
MakeName(0X807F5240,"CCoeControl::DrawNow()_const_280");
MakeCode(0X807F5248);
MakeName(0X807F5248,"CCoeControl::Position()_const_286");
MakeCode(0X807F5250);
MakeName(0X807F5250,"CCoeControl::IsVisible()_const_290");
MakeCode(0X807F5258);
MakeName(0X807F5258,"CCoeStatic::CCoeStatic(TUid__int__CCoeStatic::TScope)_3");
MakeCode(0X807F5260);
MakeName(0X807F5260,"CCoeControl::Parent()_const_457");
MakeCode(0X807F5268);
MakeName(0X807F5268,"CCoeControl::SetCustomGc(CWindowGc_)_470");
MakeCode(0X807F5270);
MakeName(0X807F5270,"CCoeControl::DrawBackground(TRect_const&)_const_471");
MakeCode(0X807F5278);
MakeName(0X807F5278,"CCoeControl::DrawForeground(TRect_const&)_const_472");
MakeCode(0X807F5280);
MakeName(0X807F5280,"CCoeControl::Background()_const_481");
MakeCode(0X807F5288);
MakeName(0X807F5288,"CCoeControl::CustomGc()_const_619");
MakeCode(0X807F5290);
MakeName(0X807F5290,"CCoeControl::DrawNow(TRect_const&)_const_620");
MakeCode(0X807F5298);
MakeName(0X807F5298,"CCoeStatic::CCoeStatic_Reserved1()_634");
MakeCode(0X807F52A0);
MakeName(0X807F52A0,"CCoeStatic::CCoeStatic_Reserved2()_635");
MakeCode(0X807F52A8);
MakeName(0X807F52A8,"CCoeStatic::_CCoeStatic()_7");
MakeCode(0X807F52B0);
MakeName(0X807F52B0,"RWsGraphicMsgBuf::RWsGraphicMsgBuf()_539");
MakeCode(0X807F52B8);
MakeName(0X807F52B8,"CRemoteGc::NewL(CWsScreenDevice_)_10");
MakeCode(0X807F52C0);
MakeName(0X807F52C0,"CRemoteGc::EndDraw()_14");
MakeCode(0X807F52C8);
MakeName(0X807F52C8,"CRemoteGc::BeginDraw(TRect_const&)_15");
MakeCode(0X807F52D0);
MakeName(0X807F52D0,"CRemoteGc::ExternalizeL(RWsGraphicMsgBuf&__int)_7");
MakeCode(0X807F52D8);
MakeName(0X807F52D8,"CRemoteGc::ResetCommandBuffer()_8");
MakeCode(0X807F52E0);
MakeName(0X807F52E0,"CRemoteGc::SetCommandBufferObserver(MCommandBufferObserver_)_9");
MakeCode(0X807F52E8);
MakeName(0X807F52E8,"MGfxTransAdapter::CreateL(MGfxTransClient_)_1");
MakeCode(0X807F52F0);
MakeName(0X807F52F0,"MGfxTransAdapter::Destroy(MGfxTransAdapter_)_2");
MakeCode(0X807F52F8);
MakeName(0X807F52F8,"__aeabi_memclr_143");
MakeCode(0X807F5300);
MakeName(0X807F5300,"__aeabi_unwind_cpp_pr0_158");
MakeCode(0X807F5308);
MakeName(0X807F5308,"__cxa_begin_catch_180");
MakeCode(0X807F5310);
MakeName(0X807F5310,"__cxa_call_unexpected_182");
MakeCode(0X807F5318);
MakeName(0X807F5318,"__cxa_end_catch_183");
MakeCode(0X807F5320);
MakeName(0X807F5320,"__cxa_end_cleanup_184");
MakeCode(0X807F5328);
MakeName(0X807F5328,"operator_delete(void_)_3");
MakeCode(0X807F5330);
MakeName(0X807F5330,"operator_new(unsigned_int)_7");



MakeCode(0X807F2938);
MakeName(0X807F2938,"GfxTransEffect::Deregister(CCoeControl_const_)_1");
MakeCode(0X807F2994);
MakeName(0X807F2994,"GfxTransEffect::Invalidate(CCoeControl_const_)_2");
MakeCode(0X807F2920);
MakeName(0X807F2920,"GfxTransEffect::IsRegistered(CCoeControl_const_)_3");
MakeCode(0X807F29D8);
MakeName(0X807F29D8,"GfxTransEffect::SetDemarcation(CCoeControl_const___TRect_const&)_4");
MakeCode(0X807F29A8);
MakeName(0X807F29A8,"GfxTransEffect::SetDemarcation(CCoeControl_const___TPoint_const&)_5");
MakeCode(0X807F2A08);
MakeName(0X807F2A08,"GfxTransEffect::SetDemarcation(CCoeControl_const___CCoeControl_const___TRec
t_const&)_6");
MakeCode(0X807F2A24);
MakeName(0X807F2A24,"GfxTransEffect::SetDemarcation(TVwsViewId_const&__CCoeControl_const___TRect_const&)_7");
MakeCode(0X807F29F0);
MakeName(0X807F29F0,"GfxTransEffect::SetDemarcation(TVwsViewId_const&__TRect_const&)_8");
MakeCode(0X807F29C0);
MakeName(0X807F29C0,"GfxTransEffect::SetDemarcation(TVwsViewId_const&__TPoint_const&)_9");
MakeCode(0X807F2A70);
MakeName(0X807F2A70,"GfxTransEffect::End(CCoeControl_const_)_10");
MakeCode(0X807F2AA4);
MakeName(0X807F2AA4,"GfxTransEffect::Abort(CCoeControl_const_)_11");
MakeCode(0X807F2AB8);
MakeName(0X807F2AB8,"GfxTransEffect::Abort()_12");
MakeCode(0X807F2A40);
MakeName(0X807F2A40,"GfxTransEffect::Begin(CCoeControl_const___unsigned_int)_13");
MakeCode(0X807F2A58);
MakeName(0X807F2A58,"GfxTransEffect::BeginLC(CCoeControl_const___unsigned_int)_14");
MakeCode(0X807F2964);
MakeName(0X807F2964,"GfxTransEffect::GetHints(CCoeControl_const_)_15");
MakeCode(0X807F2904);
MakeName(0X807F2904,"GfxTransEffect::Register(CCoeControl_const___TUid__int)_16");
MakeCode(0X807F28E8);
MakeName(0X807F28E8,"GfxTransEffect::Register(CCoeControl_const___TVwsViewId_const&__TUid)_17");
MakeCode(0X807F294C);
MakeName(0X807F294C,"GfxTransEffect::SetHints(CCoeControl_const___unsigned_int)_18");
MakeCode(0X807F2AD8);
MakeName(0X807F2AD8,"GfxTransEffect::Enable()_19");
MakeCode(0X807F2AC8);
MakeName(0X807F2AC8,"GfxTransEffect::Disable()_20");
MakeCode(0X807F297C);
MakeName(0X807F297C,"GfxTransEffect::SetHints(CCoeControl_const___TUid)_21");
MakeCode(0X807F2AE8);
MakeName(0X807F2AE8,"GfxTransEffect::IsEnabled()_22");
MakeCode(0X807F2B2A);
MakeName(0X807F2B2A,"GfxTransEffect::BeginGroup()_23");
MakeCode(0X807F2BAC);
MakeName(0X807F2BAC,"GfxTransEffect::EndDrawItem(CCoeControl_)_24");
MakeCode(0X807F2B82);
MakeName(0X807F2B82,"GfxTransEffect::BeginDrawItem(CCoeControl___unsigned_int__TUid__TRect&__TRect___TRect_)_25");
MakeCode(0X807F2BF8);
MakeName(0X807F2BF8,"GfxTransEffect::EndFullScreen()_26");
MakeCode(0X807F2C08);
MakeName(0X807F2C08,"GfxTransEffect::AbortFullScreen()_27");
MakeCode(0X807F2BC0);
MakeName(0X807F2BC0,"GfxTransEffect::BeginFullScreen(unsigned_int__TRect_const&)_28");
MakeCode(0X807F2BD8);
MakeName(0X807F2BD8,"GfxTransEffect::BeginFullScreen(unsigned_int__TRect_const&__unsigned_int__TDesC8_const&)_29");
MakeCode(0X807F2AFA);
MakeName(0X807F2AFA,"GfxTransEffect::SetEndDemarcation(CCoeControl_const___TRect_const&)_30");
MakeCode(0X807F2B52);
MakeName(0X807F2B52,"GfxTransEffect::SetTransitionData(unsigned_int__TDesC8_const&)_31");
MakeCode(0X807F2B12);
MakeName(0X807F2B12,"GfxTransEffect::SetBeginDemarcation(CCoeControl_const___TRect_const&)_32");
MakeCode(0X807F2C18);
MakeName(0X807F2C18,"GfxTransEffect::SetTransitionObserver(MGfxTransEffectObserver_)_33");
MakeCode(0X807F2B6A);
MakeName(0X807F2B6A,"GfxTransEffect::RegisterDrawItemControl(CCoeControl___TUid)_34");
MakeCode(0X807F2B3E);
MakeName(0X807F2B3E,"GfxTransEffect::EndGroup(int)_35");
MakeCode(0X807F2A8C);
MakeName(0X807F2A8C,"GfxTransEffect::NotifyExternalState(int__TDesC8_const_)_36");
}

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

lo chiedo una volta per tutte , la patch c2z e kastor non vanno in conflitto , la seconda non serve a nulla se c'è c2z attiva o sbaglio?

teoricamente no.. praticamente.. te attivali entrambi e finita li.. tanto non vanno in conflitto..

P.S. non sporcate il 3D in sto modo.. scrivi nell'altro piuttosto..

##############

@ il.socio

1) Cambia file con cartella nel corrispettivo di c:\Resource\ErrRd , ci si potrebbe sbagliare creando un txt.. come ho fatto io.. poi corretto dasolo con una cartella

2) Testerò i risultati su fw 31.0.017, sia mai si arrivi a risultato ottimale con minor passaggi rispetto al 30.. Parlo di N95-1

Per ora, ho copiato i file nella cartella ..\sys\ecc_ecc e ho notato 2 cose

1) il menù effetti tema ora è naturalmente visibile e selezionabile tra attivo/disattivo. L'operazione di attivazione crea errore -1()

2) il menù effetti tema rimane selezionabile senza aver applicato le patch c2z e kastorUI, anche dopo riavvio è ancora visualizzabile :thumbs: (buono)

è pensabile che il fw cerchi in automatico prima i file su c e poi su z, semplificando molto il lavoro.

Modificato da uccaa
Link to comment
Condividi su altri siti

Scusa, ti ho chiesto una cosa ma ne volevo un'altra. Volevo chiederti l'elenco competo dei file che interagiscono con la dll. Scusa ancora

Ho aggiunto questo

https://www.nokioteca.net/home/forum/index....st&id=27627

che contiene la lista completa delle dipendenze, ma e' per il fw30.

Per ciascun eseguibile vengono mostrate tutte le dll utilizzate.

Purtroppo ho accidentamente cancellato il dump del fw21 e senza di quello non riesco a generare velocemente la lista completa delle dipendenze...

Link to comment
Condividi su altri siti

Ho aggiunto questo

https://www.nokioteca.net/home/forum/index....st&id=27627

che contiene la lista completa delle dipendenze, ma e' per il fw30.

Per ciascun eseguibile vengono mostrate tutte le dll utilizzate.

Purtroppo ho accidentamente cancellato il dump del fw21 e senza di quello non riesco a generare velocemente la lista completa delle dipendenze...

Grazie Infinite :lmaosmiley:

Link to comment
Condividi su altri siti

queste sono le dipendenze delle librerie.. ma gli eseguibili?

di sicuro la parte grafica è gestita da un eseguibile..

ah.. domanda idiota..

hai provato a caricare i file

sys\bin\tfxlistbox.dll

sys\bin\tfxserver.dll

sys\bin\tfxserveranim.dll

sys\bin\tfxserverclient.dll

sys\bin\TfxSrvPlugin.dll

sys\bin\transitionserver.dll

in C e controllato se parte qualcosa? o se cambia l'errore?

Link to comment
Condividi su altri siti

FW 30:

=> gfxtransadapter.dll

- EUser.dll

- DRTAEABI.dll

- SCPPNWDL.dll

FW 21:

=> gfxtransadapter.dll

- EUser.dll

- tfxserverclient.dll

- Cone.dll

- Ws32.dll

- gfxtrans.dll

- DRTAEABI.dll

- SCPPNWDL.dll

- DRTRVCT2_1.dll

:)<_<

Domani vedo di fare qualcosa con il metodo empirico :lol: (sostituzione di tutti i file coinvolti, dubito fortemente che mi si accenderà ancora il telefono :shifty: )

queste sono le dipendenze delle librerie.. ma gli eseguibili?

di sicuro la parte grafica è gestita da un eseguibile..

ah.. domanda idiota..

hai provato a caricare i file

sys\bin\tfxlistbox.dll

sys\bin\tfxserver.dll

sys\bin\tfxserveranim.dll

sys\bin\tfxserverclient.dll

sys\bin\TfxSrvPlugin.dll

sys\bin\transitionserver.dll

in C e controllato se parte qualcosa? o se cambia l'errore?

Se guardi nel file ci sono anche le dipendenze degli eseguibili.

La parte grafica è controllata da più eseguibili. E' emerso che quello che le fa partire è EwSrv.

Si provato ma nulla è cambiato. Bisognerà rimappare tutto dopo che si è capito il giro :incazzato:

Modificato da 95A31
Link to comment
Condividi su altri siti

queste sono le dipendenze delle librerie.. ma gli eseguibili?

Ci sono tutte le dipendenze... Guarda bene...

ah.. domanda idiota..

hai provato a caricare i file

sys\bin\tfxlistbox.dll

sys\bin\tfxserver.dll

sys\bin\tfxserveranim.dll

sys\bin\tfxserverclient.dll

sys\bin\TfxSrvPlugin.dll

sys\bin\transitionserver.dll

in C e controllato se parte qualcosa? o se cambia l'errore?

No, non ho provato, ma se vuoi provare tu, accomodati pure! :)

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

FW 30:

=> gfxtransadapter.dll

- EUser.dll

- DRTAEABI.dll

- SCPPNWDL.dll

FW 21:

=> gfxtransadapter.dll

- EUser.dll

- tfxserverclient.dll

- Cone.dll

- Ws32.dll

- gfxtrans.dll

- DRTAEABI.dll

- SCPPNWDL.dll

- DRTRVCT2_1.dll

A quanto pare, nel fw30, le 2 funzioni esportate da gfxtransadapter sono state rimpiazzate con delle funzioni "dummy", tanto per far contento il sistema...

E mi sa che questo rappresenta un altro pezzetto da dover sistemare.

Ora stavo un attimo riflettendo su come sarebbe possibile rimpiazzare il gfxtransadapter.dll del fw30 con quello del fw20... L'unico metodo che mi viene in mente, e' una "sbrodolata" di patch per rompatcher che non finisce piu'...

Ma non e' proprio il massimo, soprattutto perche' ci sono troppe possibilita' di sbagliare qualcosa in fase di creazione della patch.

Link to comment
Condividi su altri siti

No, non ho provato, ma se vuoi provare tu, accomodati pure! :)

linkami i file

A quanto pare, nel fw30, le 2 funzioni esportate da gfxtransadapter sono state rimpiazzate con delle funzioni "dummy", tanto per far contento il sistema...

E mi sa che questo rappresenta un altro pezzetto da dover sistemare.

Ora stavo un attimo riflettendo su come sarebbe possibile rimpiazzare il gfxtransadapter.dll del fw30 con quello del fw20... L'unico metodo che mi viene in mente, e' una "sbrodolata" di patch per rompatcher che non finisce piu'...

Ma non e' proprio il massimo, soprattutto perche' ci sono troppe possibilita' di sbagliare qualcosa in fase di creazione della patch.

ma prova direttamente mettendo il gfxXXXXXX.dll nella cartella c:

come ho detto prima i dll che abilitano la scritta effetti tema mi vengono caricati in primis da C senza aver attive le patch, ne le caps..

con un po' di cuculo ti carica la dll direttamente da C, senza usare patch..

prova..

p.s. se ce la fai linkami i file del 20.. non ho la dmp e non c'ho voglia di scaricarmela.. :P

poi preverò il mio test fai da test ^_^

EDIT: passa anche il gfxtranseccecc.dll

e, domandone.. sti file qua ci sono le fw 30? o bisogna caricare anche questi?

- tfxserverclient.dll

- Cone.dll

- Ws32.dll

- gfxtrans.dll

- DRTRVCT2_1.dll

ricapitolando.. linkami gentilmente i file dell fw 20:

sys\bin\tfxlistbox.dll

sys\bin\tfxserver.dll

sys\bin\tfxserveranim.dll

sys\bin\tfxserverclient.dll

sys\bin\TfxSrvPlugin.dll

sys\bin\transitionserver.dll

+

=> gfxtransadapter.dll

- EUser.dll

- tfxserverclient.dll

- Cone.dll

- Ws32.dll

- gfxtrans.dll

- DRTAEABI.dll

- SCPPNWDL.dll

- DRTRVCT2_1.dll

tutto del fw 20..

provo ad editarli con un editor esadecimale e controllo se i file simili sono uguali..

è ipotizzabile che il file gfxtranseccecc.dll del fw 30 e 31 sia quello del 20 meno i pezzi essenziali che collegavano i file mancanti nei nuovi fw..

ti ringrazio.. attendo file per test

Modificato da uccaa
Link to comment
Condividi su altri siti

linkami i file

Ho appena uppato il dump del fw21 contenente tutti i files che ti servono e qualsiasi altro file di cui dovessi avere bisogno in futuro per le tue prove.

http://www.megaupload.com/?d=DGGR8NBL

come ho detto prima i dll che abilitano la scritta effetti tema mi vengono caricati in primis da C senza aver attive le patch, ne le caps..

con un po' di cuculo ti carica la dll direttamente da C, senza usare patch..

Il file staticfeatures.dll a cui fai riferimento NON si trovava nella rom, quindi mi e' stato possibile rimpiazzarlo semplicemente mettendolo in c: e calcolando l'hash del file... Oltretutto, non e' stato necessario neppure rimappare le chiamate alle api di sistema, perche' gli eseguibili che NON sono in rom hanno un formato differente ed effettuano le chiamate alle varie api utilizzando il loro ordinale e non il loro indirizzo statico in memoria.

Se fosse stato in rom sarebbe stato possibile utilizzare rompatcher per modificare quello del fw30 aggiungendo la feature #666, senza rimpiazzare nessun file.

Se prendi una dll che e' in rom e la piazzi in c: non credo otterrai nulla, perche' (ad es.) all'indirizzo 0x80102030 ci sara' sempre caricata la dll originale e qualsiasi chiamata a questo indirizzo fara' cmq. riferimento alla dll originale.

ma prova direttamente mettendo il gfxXXXXXX.dll nella cartella c:

<CUT>

prova..

Come gia' detto, se vuoi provare, accomodati pure! ^_^

e, domandone.. sti file qua ci sono le fw 30? o bisogna caricare anche questi?

Nel primo post trovi il diff di 95A31 con il confronto dei files presenti nei due firmare.

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

Ok.. Mi sa che per vedere a cosa "punta" _MagicValue bisogna studiarsi un pò delle funzioni di Cone.dll :thumbs:

Ora le mie domande sono queste: :)

- Se si integrano le dll mancanti con la C2Z riusciremo poi a reindirizzare in qualche modo le chiamate verso di loro?

- Il file gfxtransadapter.dll nel FW 21 è (ovviamente) più grande del file gfxtransadapter.dll nel FW 30, lo spazio di memoria che avanza nel 30 è usato da qualche altro file?

-- Se no, è possibile modificare il gfxtransadapter.dll del 30 con un editor esadecimale, copiando i bit delle varie istruzioni e poi tramite il programma di Alex_N70 fare una "Diff-Patch" per rendere il file nel FW 30 uguale a quello modificato?

-- Si si, come facciamo? Non so che cosa faccia, ma MapDrivers può venirci in aiuto?

Per avere solo file del sistema proverò a modificare tramite editor esa lo StaticFeatures.dll del 30 inserendo il 0x666 e poi fare hash e C2Z, c'è qualche volontario :doh: ?

Allego l'out dell'estrazione del dump del FW 21 che mostra gli indirizzi e la dimensione dei file della ROM

Out_DumpROM.txt

Modificato da 95A31
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