Jump to content
Nokioteca Forum

Kastor Su N95 Fw30


 Share

Recommended Posts

nn si è ancora arrivati a una soluzione??? :D

Si continua a lavorare, quando arriverà la soluzione la scriveremo a caratteri cubitali stanne certo :) intanto ringrazio ancora tutti per le dritte ;)

DRTRVCT2_1.DLL

e

DRTRVCT2_2.DLL

mi pare che siano identici inoltre:

1) DRTRVCT2_2.DLL ha come dipendenze solo Euser.dll

2) DRTRVCT2_1.DLL è in presente molte altre dipendenze...mi viene da pensare che se lo siano dimenticati lì come seconda versione della DRTRVCT2_1.dll (un copia e incolla)... cmq...

si potrebbero recuperare quei 7.0 kb di spazio che occupa DRTRVCT2_2.dll per usarli con rompatcher

Modificato da Bl@ckJ@ck4IT
Link to comment
Condividi su altri siti

  • Risposte 431
  • Created
  • Ultima Risposta

Top Posters In This Topic

Qualcuno col firmware 21 può controllare se ha in c:\private una tra le seguenti cartelle:

10281f89

10281f90

10282e4c

10282e4d

10282e4a

10282e49

10282e50

10282e51

10282e52

10282e53

10282e54

10282e55

10282e56

10282e57

2000B472

2000B473

2000B474

2000B475

2000B476

101f4cd2

e in caso positivo postarle in un file zip?

Grazie :thumbs:

Link to comment
Condividi su altri siti

Ti ringrassio provo a darci un occhiata :-) parlando con un mio amico è venuto fuori che certi uid sono per così dire "criptati" e alcuni "nascosti"..non visibili quindi tramite i metodi usati finora..me l'ha detto perché sta impazzendo per aggiungere delle features ad un E71 e sta smanettando un po'..

Non c'è modo di creare un HelloWorld2 che passa a Ewsrv.exe le librerie di kastor? avevo trovato un Rload tempo addietro ma non saprei come implementarlo..

Sto provando ad usare HelloWorld, mi dice OldValue = 2147483647 poi NewValue = 0 però se poi vado a vedere Effetti Tema è ancora su Disattiva e se provo a rifare la stessa operazione non dice OldValue = 0 (quindi non lo cambia).

L'ho scoperto perché se vado a cambiare Effetti Tema da Temi e torno su HelloWorld mi dice OldValue = 0 e poi NewValue = 0...

Testato su Fw31.0.0.17

Modificato da Bl@ckJ@ck4IT
Link to comment
Condividi su altri siti

[...]

Non c'è modo di creare un HelloWorld2 che passa a Ewsrv.exe le librerie di kastor? avevo trovato un Rload tempo addietro ma non saprei come implementarlo..

[...]

E' una mia opinione però se lavori a così "alto livello" mi sa che nn risolverai molto :(

Non voglio scoraggiare nessuno :) Anzi io ti sto sempre seguendo :) Continua così vedrai che prima o poi qualcosa salta fuori ;)

Modificato da 95A31
Link to comment
Condividi su altri siti

E' una mia opinione però se lavori a così "alto livello" mi sa che nn risolverai molto :shifty:

Non voglio scoraggiare nessuno :lol: Anzi io ti sto sempre seguendo :) Continua così vedrai che prima o poi qualcosa salta fuori :D

Ti ringrazio le sto provando davvero tutto :-)

qui ho trovato un e-book interessante

Develop_Symbian_E-Book

tra cui a pagina 143 si dice che gli exe non hanno bisogno di UID (e che spesso è impostato a 0) quindi la ricerca del socio si restringe perché deve escludere tutti gli EXE nella ricerca del MagicValue dato che non hanno UID :D

RLibrary API Class

Symbian OS provides an API class called RLibrary to load and invoke DLL functions at runtime. The import library uses this API to access the DLL and so it’s instructive to have a quick look at this class, even though the import library shields you from needing to use it. The key methods of RLibrary are Load() and Lookup(). The Load()method is used to load a specific DLL and associate it with the class. The Lookup() method will look up the DLL function with the ordinal value passed to it.

DLL INTERFACE FREEZING 131

The following is a simple example of using RLibrary. It loads a DLL called MyDll.dll and calls the DLL function whose ordinal value is 1:

RLibrary lib;

lib.Load(_L("MyDll.dll"));

TLibraryFunction MyFirstFunc=library.Lookup(1);

MyFirstFunc();

lib.Close();

In addition to its use by system code to access import libraries, an application can make explicit use of the RLibrary class. Explicit use is necessary when using DLLs that act as plug-ins, such as polymorphic DLLs.

In questo punto dice che si possono usare due funzioni Load() e Lookup(). La prima carica la dll la seconda invece, tramite un ordinale come parametro, carica la relativa funzione all'ordinale specificato. Si potrebbe creare un programmino che, in un ciclo, esegue il metodo Lookup e scrive se trova o non trova una funzione a quell'ordinale. In questo modo avremmo una punta dell'iceberg delle funzioni contenute nelle librerie tfx varie...

Questo PDF invece lo devo ancora guardare

Modificato da Bl@ckJ@ck4IT
Link to comment
Condividi su altri siti

Non voglio portarvi sulla cattiva strada:

Io avrei questa cosa in mente:

Senza toccare i file presenti in ROM, se potete, create un programmino da installare che è capace di interpretare i file presenti in E(Memory Card) e possiamo bypassare qualsiasi controllo, così possiamo sia copiare l'intera ROM e quindi i file necessari per far partire i Kastor da un cellulare con Kastor attivi, sia caricarli da Memory Card, così facendo si avranno un programma che carica i nostri Kastor e gli interi effetti in E.

Spero di non aver detto una cavolata. :angel:

Link to comment
Condividi su altri siti

Non voglio portarvi sulla cattiva strada:

Io avrei questa cosa in mente:

Senza toccare i file presenti in ROM, se potete, create un programmino da installare che è capace di interpretare i file presenti in E(Memory Card) e possiamo bypassare qualsiasi controllo, così possiamo sia copiare l'intera ROM e quindi i file necessari per far partire i Kastor da un cellulare con Kastor attivi, sia caricarli da Memory Card, così facendo si avranno un programma che carica i nostri Kastor e gli interi effetti in E.

Spero di non aver detto una cavolata. :thumbs:

Rieccomi qua :lmaosmiley: l'idea è buona, ho già un po' di documentazione sull'intercettazione degli eventi di sistema (popup, listbox ecc.) ma un mio amico mi ha fatto tornare coi piedi per terra perché è certo che un implementazione via software avrebbe delle prestazioni decisamente inferiori rispetto alle librerie già ottimizzate della ROM :thumbs:

Nel frattempo ecco un veloce confronto dei KB persi e guadagnati nelle librerie principali dal fw21 al fw31 (tre cifre significative dopo il punto)

Legenda:

[nomefile] = da [dim (KB) fw21] a [dim (KB) fw31] (differenza in KB)

Report:

[psln.exe] = da 28.800 a 28.880 (+0.080)

[pslnengine.dll] = da 10.900 a 10.910 (+0.010)

[gfxtrans.dll] = da 13.300 a 13.260 (-0.040)

[gfxtransadapter.dll] = da 6.550 a 0.628 (-5.922)

Modificato da Bl@ckJ@ck4IT
Link to comment
Condividi su altri siti

Domanda: ho provato a copiare pslnengine.dll e psln.exe del fw21 su c:\ e ad attivare c2z. Quando cerco di entrare nei temi mi esce un -1. sapete dirmi perché?

Inoltre ho l'impressione che anche se ho copiato gfxtrans e gfxtransadapter su c:\ non me li vada a prendere..si può verificare in qualche modo?

Il.Socio tramite il tuo SISXplorer modificato potresti dirmi quali files installa il N81.sis in allegato?

N81.sis

Modificato da Bl@ckJ@ck4IT
Link to comment
Condividi su altri siti

[...]

l'idea è buona, ho già un po' di documentazione sull'intercettazione degli eventi di sistema (popup, listbox ecc.) ma un mio amico mi ha fatto tornare coi piedi per terra perché è certo che un implementazione via software avrebbe delle prestazioni decisamente inferiori rispetto alle librerie già ottimizzate della ROM :D

[...]

[gfxtransadapter.dll] = da 6.550 a 0.628 (-5.922)

In effetti un'implementazione via software risulterebbe lenta e pesante (visto che l'N95 non ha molta RAM) :lol:. Per ottimizzarla/implementarla ci si potrebbe ispirare alle librerie della ROM :lol:

In ogni caso resta sempre la soluzione più realistica.

Come hai notato il punto cruciale nel porting dei Kastor sta nel file gfxtransadapter.dll che differisce di molto da quelli nel FW 30/31. La soluzione della sovrascrittura di qualche altro file è improponibile xkè la quantità di dati che vengono scovrascritti sarebbe troppo grande e causerebbe instabilità nel sistema. Quindi resterebbe da trovare indirizzi di memoria ROM che non vengono utilizzati, piazzare li i dati mancanti e sperare che tutto funzioni. ;)

Modificato da 95A31
Link to comment
Condividi su altri siti

La soluzione della sovrascrittura di qualche altro file è improponibile xkè la quantità di dati che vengono scovrascritti sarebbe troppo grande e causerebbe instabilità nel sistema. Quindi resterebbe da trovare indirizzi di memoria ROM che non vengono utilizzati, piazzare li i dati mancanti e sperare che tutto funzioni. :rolleyes:

Sto cercando di creare il famoso programma che carica in ram le dll perse nell'aggiornamento :thumbs: ...

Ipotesi: non potremmo sovrascrivere quei settori della rom che non usiamo? tipo, a me il Music Store fa solo polvere...se potessimo sovrascrivere quella porzione di indirizzi di memoria, tanto penso che pochi o nessuno usino quell'applicazione..

Link to comment
Condividi su altri siti

Sto cercando di creare il famoso programma che carica in ram le dll perse nell'aggiornamento :wub: ...

Ipotesi: non potremmo sovrascrivere quei settori della rom che non usiamo? tipo, a me il Music Store fa solo polvere...se potessimo sovrascrivere quella porzione di indirizzi di memoria, tanto penso che pochi o nessuno usino quell'applicazione..

Buona fortuna x i programma :lol: ( Io purtroppo non posso aiutarti in questo campo).

Si si potrebbe :wub:. Però da soli è un po come buttarsi dal 2° piano e sperare di rimaner vivi.. Alex_N70,Il.Socio voi che dite?

Link to comment
Condividi su altri siti

Buona fortuna x i programma :thumbs: ( Io purtroppo non posso aiutarti in questo campo).

Si si potrebbe :(. Però da soli è un po come buttarsi dal 2° piano e sperare di rimaner vivi.. Alex_N70,Il.Socio voi che dite?

Sto cercando di implementare un ciclo del metodo LookUp(). In pratica questa funzione richiede come parametro un ordinale. Sto creando un while che si comporta così:

int contatore = 0; // o un valore più sensato di 0, devo studiarmi gli ordinali :lol:

while (contatore < [numeroelevatoascelta]){

se (funzione LookUp(contatore)) // quindi se la funzione ha successo significa che ha trovato qualcosa {

scrivi o restituisci l'ordinale (il contatore) o se riesci il nome della funzione

}

altrimenti non fare nulla {

}

contatore = contatore + 1

}

questo è lo pseudo codice che ho in mente :thumbs: una volta fatto lo lascio li a macinare anche per giorni non mi importa...così almeno otterremmo la lista degli ordinali funzionanti...

Riguardo al MagicValue ho notato che ogni dll non ha un solo UID bensi 3: UID, UID2 e UID3... che sia da cercare negli UID2 e UID3? :D

Modificato da Bl@ckJ@ck4IT
Link to comment
Condividi su altri siti

Ti consiglio di leggere i post precedenti, ma soprattutto consultare il materiale a disposizione nel primo post... Cosi' almeno risparmi tempo ed eviti di fare lavori inutili (copiare pslnengine.dll e psln.exe del fw21 su c:\ e ad attivare c2z) o rifare lavori gia' completamente fatti (trovare gli ordinali delle varie funzioni)...

Per gli ordinali, il loro riferimento e' gia' presente nei file .idc es:

http://www.nokioteca.net/home/forum/index....t&p=1275316

per la libreria gfxtrans.dll (N95 firmware 21) all'ordinale 4 si trova la funzione GfxTransEffect::IsRegistered e fisicamente, in memoria ROM, e' mappata sull'indirizzo 0X807F2920

Riguardo al codice per caricare libreria e richiamare un metodo tramite ordinale vedi qui:

http://www.nokioteca.net/home/forum/index....t&p=1278047

Quello che pero' e' difficile da fare e' richiamare un metodo passando gli opportuni parametri e credo si possa fare solo a livello arm.

Quello che hai riportato riguardo all'UID 0 per gli exe e' corretto solo per versioni Symbian < 9... Su Symbian 9.x Anche gli exe devono avere UID univoco.

UID1/UID2 identificano la tipologia del file, solitamente l'unico UID rilevante e' UID3... ad ogni modo, magicvalue lo avevo ricercato tra UID1/2/3 ma senza successo, sono ancora dell'idea che sia il riferimento ad una variabile globale che viene piazzata nel TLS.

@95A31, purtroppo il codice ARM lo mastico troppo poco per poter realizzare in tempi brevi qualcosa di decente e funzionante... :crying_anim02:

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

Innanzitutto ti ringrazio per la collaborazione, la costanza è il primo ingrediente del successo :angel: appena riesco tiro in mezzo anche un mio amico che già smanetta per il suo E71 , devo solo trovarlo e schiavizzarlo :shifty::angel::lol:^_^

Tornando a noi, oltre al metodo LookUp() c'è anche il Load() quindi potrei aiutarti a creare uno schema logico delle funzioni (i parametri che mancano) che vengono richiamate dato che gli ordinali ce li abbiamo già tutti :-) fammi sapere se possiamo dare una mano oltre alle varie Kastorate che ci vengono in mente :angel: io continuo a studiare e a ricercare..speriamo che la Nokia non ci prenda sul tempo con un nuovo Kastor-firmware nel frattempo :lol:

Nell'ipotesi nata tra me e 95A31 sarebbe possibile sovrascrivere indirizzi di memoria di applicazioni che non usiamo?

Tipo "Info Prodotto" per esempio, sfido io a trovare qualcuno che lo trovi utile :thumbs: in pratica, mettiamo caso che Info Prodotto vada dall'indirizzo 80000800 a 80000888 abbiamo 00000088 spazio dove sovrascrivere le funzioni che hanno tolto a gfxtransadapter.

Poi nelle dll che richiamavano tali funzioni si cambiano gli indirizzi che richiamano in quelli messi da noi al posto di Info Prodotto tramite RomPatcher..

è probabile che quel -1 esca perché all'indirizzo specificato o non trova nulla (spazio vuoto) oppure non trova quello che stava cercando perché magari al suo posto vi è un'altra funzione :thumbs:

Modificato da Bl@ckJ@ck4IT
Link to comment
Condividi su altri siti

potrei aiutarti a creare

Mi sono perso qualche pezzo per strada!? <_< sei tu che:

Sto cercando di creare il famoso programma che carica in ram le dll perse nell'aggiornamento

quindi, al piu', sono io che "potrei aiutarti a creare" :D Ma come dicevo, la mia conoscenza di arm non e' proprio sufficiente per questo compito, ed imho, e' indispensabile...

a creare uno schema logico delle funzioni (i parametri che mancano) che vengono richiamate

Prenditi tempo per leggere e capire il post che ti ho segnalato prima (e piu' in generale i post precedenti) perche' anche questo c'e' gia'...

Nei file .idc noterai che i parametri accettati dai vari metodi sono gia' presenti, il problema e' passarglieli a livello arm.

Oltretutto, sia per gli import che per gli export di ciascuna .dll

Riguardo al sovrascrivere il codice di un'altra applicazione, suppongo sia possibile... perche' no...

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

[...]

Nell'ipotesi nata tra me e 95A31 sarebbe possibile sovrascrivere indirizzi di memoria di applicazioni che non usiamo?

Tipo "Info Prodotto" per esempio, sfido io a trovare qualcuno che lo trovi utile :thumbs: in pratica, mettiamo caso che Info Prodotto vada dall'indirizzo 80000800 a 80000888 abbiamo 00000088 spazio dove sovrascrivere le funzioni che hanno tolto a gfxtransadapter.

[...]

Sto seriemente pensando di fare ciò.. Ora sto vedendo cosa andare a sovrascrivere.

- Music Store è troppo piccolo.

- Info Prodotto è al limitie ma mi concentro su quello.

Se lo spazio non dovesse bastarmi penso si sovrascrivere MusicShopApp.exe e relative dll.

Sapete a che applicazione corrisponde MusicShopApp.exe ? Come si può raggiugere tramite UI? E' utille? Posso sovrascrivere tranquillamente?

Ora vedo di modificare lo Staticfeatures.dll del FW 30 in modo da nn avere un file "vecchio" rispetto al firmware.

Modificato da 95A31
Link to comment
Condividi su altri siti

Per lo statcifeatures.dll la sostituzione e' piu' sicura perche' non e' detto che la feature 666 venga controllata solo da psln.exe, magari lo stesso check e' presente anche in altri eseguibili e rischi di perderteli corrompendo la corretta esecuzione degli effetti.

Inoltre, puo' darsi che esistano anche altre features che entrano in gioco per la gestione degli effetti e che sono state rimosse nei fw successivi.

Imho, meglio lasciarlo cosi' per ora, SE POI ( lo spero :thumbs: ) tutto dovesse funzionare, allora varra' la pena di mettersi ad ottimizzare il processo per evitare sostituzioni manuali dei files.

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

Ho aperto MusicStore che sembrava essere quello più vicino all'eseguibile MusicShopApp.exe ma controllando con TaskMan rimane aperto solo MusicStore.exe per tutta la durata della navigazione..a mio parere puoi andare tranquillo perché secondo me quell'Exe si attiva solo quando arrivi alla pagina di acquisto di una canzone ;)

Se non bastasse Info prodotto ho trovato anche che MyNokia è grande 20,17kb e anch'esso a mio parere è inutile :lol:

Modificato da Bl@ckJ@ck4IT
Link to comment
Condividi su altri siti

Il.Socio sai indicarmi le dll che implementano le funzioni del TLS?

Se non erro dovrebbe essere Cone.dll, confermi?

Se dovrebbe essere lui, dalle dipendenze i file più probabili che implementino il famoso UID sono:

aknlistloadertfx.dll

aknskins.dll

akntransitionutils.dll

animation.dll

gfxtrans.dll

gfxtransadapter.dll

psln.exe

PslnApplicationShellPlugin.dll

pslnengine.dll

pslnframework.dll

pslngsplugin.dll

psui.dll

Ora bisogna vedere a quali funzioni di cone.dll accedono ste benedette DLL trovare chi mette processi in memoria e tra questi sperare di trovare qualche riferimento all'UID.

Purtroppo il porting si va a farsi benedire se non si finisce il giro... :) Non ho voglia di importare funzioni alla :huh: e sperare che vada.. :(

Qualcino mi aiuti !!! :thumbs::):P

Modificato da 95A31
Link to comment
Condividi su altri siti

[...] 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)

[...]

[...]

Credo che quella funzione 0x80805A7A si occupi di recuperare dal TLS (Thread Local Storage) l'istanza della classe dedicata alla gestione degli effetti (identificata con UID _MagicValue e contenuta sempre in gfxtrans.dll).

[...]

La prima ipotesi che mi viene in mente è che sia in gfxtrans.dll ;) ma bisogna verificare quale dll trova all'indirizzo 0x80805A7A nel fw21 :shifty:

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