faenil Pubblicato: 12 Gennaio 2010 Segnalazione Share Pubblicato: 12 Gennaio 2010 Salve ragazzi, sono un possessore dell'omnia hd...mi sono iscritto da poco a questo forum ma sono abbastanza attivo su altri forum di telefonia, e vedendo che qui c'è parecchia materia grigia concentrata ho deciso di fare un salto.. vorrei imparare o almeno mettere le basi dell'hacking su symbian... sono stato il primo a rilasciare una custom rom per l'Omnia HD che includesse il Java 2.0 (stimolato dalle fantastiche rom di sev7en), ma in questo periodo la sezione custom rom sta un po' scemando, le modifiche apportabile mediante modifica dei file di configurazione in rom sono sempre le stesse, e questo rischia di omologare tutte le custom rom... per cui vorrei imparare a fare qualcosa di nuovo... mi sono sempre chiesto come fare per disassemblare i files del symbian, ho provare una volta con IDA Pro ma ricordo che la maggiorparte del codice rimaneva coperto dagli opcodes... in più mi sono anche chiesto come potrei fare per studiare i file di sistema e quindi avere un po' un sistema di euristica (mentale intendo )che mi permetta di creare delle modifiche ai file di sistema come quelle che si fanno con il RomPatcher+... Il.Socio mi ha detto che si può usare il disassembler oppure procedere attraverso debugging... ecco vorrei chiedervi qualche fonte su come imparare queste cose...o un discorsino da parte vostra per darvi una idea del mio livello di preparazione posso dirvi che sono al 2° anno di informatica, tra gli esami per cui sto studiando figurano attualmente Architettura degli Elaboratori (livello firmware, livello assembler, ecc), e Sistemi Operativi (processi,thread, sincronizzazione tra processi, sicurezza, casi Windows/Linux/Unix), che sono gli esami annuali di quest'anno... per cui procedete tranquilli con le spiegazioni vi ringrazio anticipatamente per le eventuali risposte un saluto, faenil Link to comment Condividi su altri siti More sharing options...
Il.Socio Pubblicato: 12 Gennaio 2010 Segnalazione Share Pubblicato: 12 Gennaio 2010 (modificato) In questo thread, si e' trattato del disassembly degli eseguibili: http://www.nokioteca.net/home/forum/index....howtopic=148414 ( alla fine, non si e' concluso per il meglio... ma ha cmq. portato alla nascita di RP+ ) Ti riporto qui di seguito un estratto dei post piu' rilevanti sull'argomento... (Ti consiglio cmq. di leggere almeno il primo post di quel thread) Il dumprom non contiene il bkup di tutto Z: ci restano esclusi alcuni files che DumpRom non "vede" e non piazza nel bkup... come ad esempio staticfeatures.dllIl filesystem dell'unita' Z: e' di tipo composito, vale a dire che e' l'aggregato di 2 differenti porzioni di dati: -1) ROM File System (CORE OS Image) -2) ROFS Il DumpRom e' in grado di dumpare solo la parte di dati presente nel ROM File System... Ma non quella presente nel ROFS. Stesso discorso per RomPatcher, per questo motivo, non e' possibile usare RomPatcher per patchare lo staticfeatures.dll Il vantaggio di avere il dump invece dei singoli files e' che, leggendo direttamente il dump della rom, viene piu' facile risalire agli indirizzi degli import/export presenti in ciascun eseguibile. Una guida su architettura e istruzioni Assembly ARM visualizzate da IDA Una reference online per il set di istruzioni Assembly ARM gli eseguibili che sono in c: non richiamano le varie funzioni alla stessa maniera di quelli presenti in rom...Non usano il riferimento diretto ad un preciso indirizzo fisico, ma usano invece un riferimento ordinale della funzione che si vuole richiamare... Es. un programma in rom richiama la funzione presente all'indirizzo 0x80102030 un programma in c: richiama invece la funzione numero 6 esportata da pippo.dll gli eseguibili che sono in c:, sono "compressi"... per scomprimerli (e poterli poi modificare con editor hex) e' possibile usare il comando petran contenuto nell'sdk.c:\>petran -nocompress staticfeature.dll gli eseguibili che sono in rom invece, non sono compressi. le funzioni presenti nelle dll che si trovano in ROM vengono referenziate usando il loro riferimento diretto in memoria (ROM o Shadow RAM)... quindi per fare una qualsiasi modifica a questo codice e' necessario patchare il codice in Shadow RAM (perche' quello in ROM fisicamente lo non si puo' alterare a meno di flashare il firmware...) 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 Le funzioni le trovi tutte elencate nel file gfxtrans.dll.idcQuelle 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"); } 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. Modificato 12 Gennaio 2010 da Il.Socio Link to comment Condividi su altri siti More sharing options...
faenil Pubblicato: 12 Gennaio 2010 Autore Segnalazione Share Pubblicato: 12 Gennaio 2010 (modificato) grazie Il.Socio, molto utile, vedrò di leggermi tutta la discussione prima o poi capirò... per quanto riguarda rom e rofs...la domanda che mi pongo è come mai sembra che i problemi ci siano con rofs se invece rofs possiamo spacchettarlo/ripacchettarlo, mentre (con l'i8910) il rom possiamo solo spacchettarlo e non ricompattarlo? Modificato 12 Gennaio 2010 da faenil Link to comment Condividi su altri siti More sharing options...
Il.Socio Pubblicato: 12 Gennaio 2010 Segnalazione Share Pubblicato: 12 Gennaio 2010 (modificato) Perche' gli eseguibili presenti in rofs indirizzano le varie funzioni usando il riferimento ordinale (esattamente come fanno gli eseguibili presenti in c:), mentre quelli presenti in rom indirizzano le varie funzioni tramite il riferimento diretto in memoria. Quindi gli eseguibili della rofs possono essere portati da una versione di fw ad un'altra, mentre gli eseguibili presenti in rom no. gli eseguibili che sono in c: non richiamano le varie funzioni alla stessa maniera di quelli presenti in rom...Non usano il riferimento diretto ad un preciso indirizzo fisico, ma usano invece un riferimento ordinale della funzione che si vuole richiamare... Es. un programma in rom richiama la funzione presente all'indirizzo 0x80102030 un programma in c: richiama invece la funzione numero 6 esportata da pippo.dll Modificato 22 Febbraio 2010 da Il.Socio Link to comment Condividi su altri siti More sharing options...
faenil Pubblicato: 12 Gennaio 2010 Autore Segnalazione Share Pubblicato: 12 Gennaio 2010 ah ok perfetto, è per questo che c'è stato bisogno di adattare l'hack per nuovi terminali, perchè l'indirizzo in memoria a volte era lo stesso e a volte no? Link to comment Condividi su altri siti More sharing options...
Il.Socio Pubblicato: 12 Gennaio 2010 Segnalazione Share Pubblicato: 12 Gennaio 2010 (modificato) No, non e' per questo. Nel corso del tempo e' stato necessario adattare l'hack perche' Nokia ha iniziato a sistemare i bugs che potevano essere sfruttati per hackare il cell... quindi e' stato necessario scoprirne di nuovi per consentire l'hack anche sui nuovi modelli. Attualmente, (su N97 fw 2.0 ad esempio), Nokia ha sistemato tutti i bugs che consentivano di hackare il cell. ed infatti, per ora, questo cell. e' tra gli inviolabili. Quindi, finche' qualcuno non scoprira' un nuovo bug utile ad hackare il cell. non ci sara' nulla da fare su N97 fw2.0 & co. L'hack sfrutta dei bug del sistema operativo, richiamandone le API tramite ordinale (come del resto fanno anche gli altri programmi) Se le avesse richiamate tramite indirizzamento diretto, avrebbe perso la compatibilita' gia' con il passaggio tra una versione fw ad un'altra dello stesso terminale e sarebbe stato semplicemente impossibile supportare tutti i vari terminali e fw. Piuttosto, e' per questo che alcune patch, funzionano su una specifica coppia di terminale/firmware e non funzionano su tutto il resto. Ovvero, le patch che fanno uso del comando abs: Questo comando infatti, serve a patchare un particolare indirizzo della memoria rom e questo tipo di patch, generalmente, non e' portabile neppure tra due versioni fw diverse dello stesso terminale. Modificato 12 Gennaio 2010 da Il.Socio Link to comment Condividi su altri siti More sharing options...
faenil Pubblicato: 12 Gennaio 2010 Autore Segnalazione Share Pubblicato: 12 Gennaio 2010 (modificato) ah capisco... beh vedrò di leggermi tutta la discussione tra una decina di giorni... mi piace mi piace mi piace!!! e appena tornerà il mio omnia, in assistenza per la riparazione del connettore usb... mi metterò al lavoro ps dato che devo lavorare con l'omnia hd, come faccio a ricavarmi i nomi delle funzioni in modo da fare il file .idc? ti ringrazio per le spiegazioni, e apprezzo molto la pazienza Modificato 12 Gennaio 2010 da faenil Link to comment Condividi su altri siti More sharing options...
Il.Socio Pubblicato: 12 Gennaio 2010 Segnalazione Share Pubblicato: 12 Gennaio 2010 (modificato) Realizzare i files .idc partendo da zero e' un mezzo macello... Una delle possibili vie e' spiegata in questo documento e fa uso di Perl e di Python per IDA: https://www.sec-consult.com/files/SEC_Consu...1.05_PUBLIC.pdf tra l'altro, qui spiega anche un po' come fare debugging della ROM... In alternativa, io ho realizzato un tool per l'analisi del dump della rom, che tra le altre cose, puo' generare i files .idc Non e' mia intenzione distribuirlo, ma se vuoi, basta che posti il il file romdump.dmp ottenuto dal tuo cell. e ti genero i files .idc che potrai utilizzare per risolvere i nomi. E' un piacere trovare qualcuno che ha voglia di mettere mano al cell. Modificato 12 Gennaio 2010 da Il.Socio Link to comment Condividi su altri siti More sharing options...
faenil Pubblicato: 12 Gennaio 2010 Autore Segnalazione Share Pubblicato: 12 Gennaio 2010 (modificato) anche a me fa piacere trovare qualcuno da cui poter imparare e che ha voglia di elargire le sue conoscenze ti ringrazio veramente... per quanto riguarda il programma, io ho notato che facendo il dump con romdump, esce un file di >60mb, ma la maggiorparte dei files dentro sys/bin/ sono corrotti, 0kb... mentre facendo il dump con xplore e l'hack mi viene una cartella di 200+ mb, e tutti i file che prima erano corrotti, ci sono... è normale che il software faccia così, magari per quello che spiegavamo prima di rom/rofs, oppure è una anomalia che ha con l'i8910? so che non dumpa i files del rofs, ma mi sembravano un tantino troppi i files a 0kb.. e in più se non può dumparli, è normale che compaiano, ma vuoti? Modificato 12 Gennaio 2010 da faenil Link to comment Condividi su altri siti More sharing options...
Il.Socio Pubblicato: 12 Gennaio 2010 Segnalazione Share Pubblicato: 12 Gennaio 2010 (modificato) 200+Mb di rom mi sembrano tantini... tra i due, ci si avvicina di piu' il 60Mb. Pero', il fatto che ti compaiano i files di 0 byte, invece della dimensione corretta, e' certamente una anomalia. I files che sono nella rofs, non compaiono affatto nel dump, quindi, quelli sono files che sono in rom. Se non ricordo male, esistevano almeno 2 versioni del programma DumpRom... Una di queste si perdeva per strada alcuni files... Ma quella piu' recente, invece, funzionava correttamente (almeno sul mio N95) Questa in allegato dovrebbe essere quella corretta. In ogni caso, nella prox. versione di RP+ probabilmente abilitero' l'opzione per effettuare il dump della rom e quella dovrebbe funzionare per bene. DumpROM.zip Modificato 12 Gennaio 2010 da Il.Socio Link to comment Condividi su altri siti More sharing options...
faenil Pubblicato: 12 Gennaio 2010 Autore Segnalazione Share Pubblicato: 12 Gennaio 2010 mmm adesso l'ho cancellata quindi non posso neanche controllare se avessi la versione sbagliata...però quando mi tornerà il cellulare dall'assistenza (spero a fine gennaio) riproverò con la versione che hai postato... cmq il dump dell'unità Z sono 194mb fatto con xplore... Link to comment Condividi su altri siti More sharing options...
Il.Socio Pubblicato: 12 Gennaio 2010 Segnalazione Share Pubblicato: 12 Gennaio 2010 Purtroppo, per poterlo dare in pasto al mio tool e generare i files .idc serve necessariamente il file dumprom.dmp Link to comment Condividi su altri siti More sharing options...
faenil Pubblicato: 12 Gennaio 2010 Autore Segnalazione Share Pubblicato: 12 Gennaio 2010 già dovrò aspettare...nel frattempo mi leggo il documento di sec consult e la discussione... Link to comment Condividi su altri siti More sharing options...
faenil Pubblicato: 20 Marzo 2010 Autore Segnalazione Share Pubblicato: 20 Marzo 2010 finalmente il cellulare è tornato è ora di riprendere questa discussione il prima possibile ti mando il dmp così mi generi l'idc...se ancora sei disposto ovviamente ok? ti ringrazio Link to comment Condividi su altri siti More sharing options...
faenil Pubblicato: 29 Aprile 2010 Autore Segnalazione Share Pubblicato: 29 Aprile 2010 marco ho seriamente voglia di cominciare a fare disassembling per fare mod più interessanti, e meno banali.. vorrei chiedere un grande aiuto da parte tua...perchè penso che non molti altri possano seguirmi... in attesa di una tua risposta, ti saluto Link to comment Condividi su altri siti More sharing options...
Il.Socio Pubblicato: 29 Aprile 2010 Segnalazione Share Pubblicato: 29 Aprile 2010 Non ci troviamo con i tempi... mentre prima avrei potuto generarti gli .idc in un attimo, ora non mi e' piu' possibile cavarmela alla veloce, perche' non ho sul pc tutto il necessario... inoltre, tutta la prossima settimana saro' via. Nel frattempo, puoi postare il dump, poi quando avro' piu' tempo generero' gli idc. Link to comment Condividi su altri siti More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Accedi Ora