Jump to content
Nokioteca Forum

Kastor Su N95 Fw30


 Share

Recommended Posts

credevo fossero gli export quelli "mancanti" nel fw..

Gli export sono le funzioni che una libreria mette a disposizione ad altri eseguibili.

Gli import sono le funzioni un determinato eseguibile utilizza, ma che si trovano in librerie esterne.

Ad esempio, la libreria gfxtransadapter.dll esporta la funzione MGfxTransAdapter::CreateL(MGfxTransClient_)_1

Significa che qualsiasi altro eseguibile potra' utilizzare questa funzione semplicemente importandola.

Uno di questi e' gfxtrans.dll infatti noterai che questa funzione si trova tra i suoi import.

Confronta ad esempio gfxtransadapter.dll e vedrai che, in realta' sono gli "import" quelli mancanti, questo perche' nel FW30 e' stato rimosso del codice, quindi gfxtransadapter.dll non ha piu' bisogno di importare funzioni da altre librerie, proprio perche' non fa piu' nulla, quindi gli bastano 4 funzioni in croce per assolvere al suo semplice compito di "non fare nulla"

P.S.

eseguibile = file .exe o .dll (piu' in generale un qualsiasi file contenente del codice eseguibile)

libreria = file .dll (piu' in generale qualsiasi file che esporta delle funzioni)

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

  • Risposte 431
  • Created
  • Ultima Risposta

Top Posters In This Topic

chiaro.. grazie per la spiegazione! :mumble:

che dire.. te non sei proprio in grado di implementare il girotondo famoso con tanto di reindirizzamenti? Proprio non ti riesce?

In poche parole.. per ora la giocata è impossibile visto che nessuno è in grado di fare un passaggio basilare al funzionamento

a sto punto facciamo colleta per una box e ci downgradiamo i firmware XD

Link to comment
Condividi su altri siti

che dire.. te non sei proprio in grado di implementare il girotondo famoso con tanto di reindirizzamenti? Proprio non ti riesce?

Molto meno... manca proprio la base... quello a cui ti riferisci tu aggiunge ulteriori complicazioni!

Non sono in grado di fare qualcosa di molto piu' semplice, ovvero, portare una libreria che in teoria dovrebbe essere rimasta invariata tra i due fw...

Questo perche' supponevo (erroneamente) che tutti i riferimenti presenti negli eseguibili fossero espressi sottoforma di offset relativi, invece ve ne sono alcuni che sono assoluti, ed altri che non so come interpretare.

Per capire meglio, e' necessario confrontare i 2 file gfxtrans.dll del fw21 e del fw30...

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

Ho aggiornato nel primo post, la lista dei files modificati / aggiunti / rimossi:

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

L'elenco dei files modificati e' stato rilevato tramite il programmino Remap ed il procedimento spiegato poco sopra.

L'elenco di files modificati e' cambiato sensibilmente...

Complessivamente, risulta siano stati modificati 560 files nel passaggio da FW21 a FW30, a differenza dei 2760 che uscivano fuori con il semplice "diff".

P.S. Giusto per completezza, nel caso in cui qualcuno avesse intenzione di continuare... :unsure:

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

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...

provare questo?

[...] Trovatemi una libreria piccola che ri riesca a capire quando questa va o è corrotta. Voglio provare a "cancellare" l'originale e metterla in MisciShopApp e poi dire al cell di andarsela a pescare da li. Se quando è chiamata il programma chiamante non da errori allora la mia idea è giusta altrimenti addio overwrite.

e come sempre

[..] Se guardi bene è tutto merito suo il lavoro che si è svolto x raggiungere questo punto.. Io nn ho fatto nulla non ho mai prodotto nulla ho solo butato giu idee

Ancora una volta grazie x il tuo impeccabile lavoro che stai\stavi portando avanti.

EDIT. Puoi dirmi una funzione con riferimenti assoluti che ci do un'occhio?

Modificato da 95A31
Link to comment
Condividi su altri siti

EDIT. Puoi dirmi una funzione con riferimenti assoluti che ci do un'occhio?

Qui c'e' un compare che mostra le differenze esistenti tra gfxtrans.dll FW21 e FW30, escludi le differenze dei primi 0x78 bytes che sono dell'header, e quelle al fondo che sono relative agli import... le altre differenze sono riferimenti assoluti.

compare2130.jpg

Qui c'e' la prima delle differenze come viene vista da IDA, nota i bytes differenti dove c'e' il cursore...

gfxtrans21.jpg

gfxtrans30.jpg

Link to comment
Condividi su altri siti

Scusate se interrompo il vostro lavoro....ma a che punto state.Cioè vicini a una soluzione o ancora lontani?

ma li leggi i post?

c'è scritto in grande più volte che determinate cose NON LE SAPPIAMO FARE!

e quelle determinate cose stanno alla BASE di tutto.. In poche parole, è come se dovessimo fare un tuning su una macchina scandalosa per assettarla da pista, e nessuno di noi sa come funziona la meccanica.. c'è un gommista ma manca il tecnico preparatore..

chiaro?

Link to comment
Condividi su altri siti

@Il.Socio

Mi sono perso tra immagazzinamenti di vaolri e salti.. Che valore dovremmo cambiare ? il valore delle XXXX in dword_XXXXXXX o proprio la definizione di dword_XXXXXXX ? Non è presente alcuna voce utile per le XXX di dword_XXXX nel file compilato, può darsi che la nokia\symbian adotti una codifica di immagazzinamento dei dati particolare o che il compilatore si diverta a ottimizzare il file binario rendedo il tutto illeggibile a livello esadecimale ma mi sembra strano anche perchè certi indirizzi (non so di cosa ) sono li belli in chiaro.. Dalla documentazione (generica) che ho visto fino ad ora sull'assembly ARM ho trovato solo accenni sull'opcode delle istruzioni, forse perchè bisognerebbe guardare la documentazione del processore specifico o perchè questa è disponibile solo a livello interno dell'azienda produttrice di cpu non so, fatto sta che farebbe comodo per decifrare i binari (anche se IDA è gia di per se un grandissimo aiuto). Altra possibilità è che le XXXX vengoano assegnate in automatico da IDA o definite nell'header in fase di compilazione (può essere alla voce iDataAddress?) :)

Mi vergogno di me stesso...

Modificato da 95A31
Link to comment
Condividi su altri siti

no, no i vari dword_XXXXXX li mette IDA, sono solo delle label, ma non fanno parte del codice vero e proprio...

Quello che e' rilevante invece, sono i bytes sulla sx, colorati in blu... (vedi jpg di gfxtrans.dll fw21) B4 59 7F 80 ==> ovvero, un dato che rappresenta un riferimento assoluto all'indirizzo 0x807F59B4

Quei bytes, sono gli stessi che differiscono nel compare hex (vedi jpg del compare)

Link to comment
Condividi su altri siti

Ok dato un occhio... allora.. modificando il 44 86 80 80 con hex edit e portandolo a 31 5A 09 00 ida lo interpreta con comando DCD e cono più come riferimento assoluto. Modificandolo a 45 86 80 80 mi diventa d_byte. Orami viene da pensare che il modificarlo così sia la strada corretta però bisogna fixare qualcoda nell'header (o qualchea altra parte) per cambiare l'indirizzo del valore assoluto.

ES

all'indirizzo 01234567 c'è il riferimento assoluto

noi dobbiamo portarlo all'indirizzo76543210

allora modifichiamo i richiami da 01234567 a 76543210

e poi modifichiamo l'header da 01234567 a 76543210.

Così facendo IN TEORIA itornerebbe tutto apposto.

Quste sono le prime ideee che mi vengono ma è perfettamente possibile che l'header non centri nulla. Ora come sempre queste sno sempre ipotesi da verificare. Mi dispiace molto buttare giu solo idee e non dare un contributo pratico allo sviluppo.. Scusate :incazzato:

Link to comment
Condividi su altri siti

Ok dato un occhio... allora.. modificando il 44 86 80 80 con hex edit e portandolo a 31 5A 09 00 ida lo interpreta con comando DCD e cono più come riferimento assoluto. Modificandolo a 45 86 80 80 mi diventa d_byte. Orami viene da pensare che il modificarlo così sia la strada corretta però bisogna fixare qualcoda nell'header (o qualchea altra parte) per cambiare l'indirizzo del valore assoluto.

ES

all'indirizzo 01234567 c'è il riferimento assoluto

noi dobbiamo portarlo all'indirizzo76543210

allora modifichiamo i richiami da 01234567 a 76543210

e poi modifichiamo l'header da 01234567 a 76543210.

Così facendo IN TEORIA itornerebbe tutto apposto.

Quste sono le prime ideee che mi vengono ma è perfettamente possibile che l'header non centri nulla. Ora come sempre queste sno sempre ipotesi da verificare. Mi dispiace molto buttare giu solo idee e non dare un contributo pratico allo sviluppo.. Scusate :Dito:

non sei capace a fare quello che hai in mente di fare?

Link to comment
Condividi su altri siti

@daniele 92

Gia..

@uccaa

No non sono capace. Se no lo avrei gia fatto non credi?

@Il.Socio

Intendo dire che se nell'header c'è scritto che all'indrizzo XXXXX c'è una word e tu modifichi una funzione che richiama quell'indirizzo con un indrizzo "a caso" l'OS non trova più una word ma bit "a caso" può trovare opcode delle istruzioni un byte di bay o chissa che altro.. Cioè bisogna modificare sia header che indirizzi in modo sincorono e corretto se si vuole ottenrere qualcosa di funzionante.. almeno credo... :unsure::mumble:

N.B. So di ripetermi ma mi sembra di fare veramente poco.. Ragazzi mi dispiace spararela idee "a caso".. Ma più di così non so fare :crying_anim02:

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