Soluzione Crackme 91
From UIC
Il Codice Da Vinci 2 - Serial fishing in VB6
Contents |
| Infos | |
|---|---|
| Author: | Pico de Gallo |
| Email: | pico.degallo@libero.it |
| Website: | -- |
| Date: | 14/07/2006 (dd/mm/yyyy) |
| Level: |
|
| Language: | Italian |
| Comments: | |
Introduzione
Finalmente mi cimento nel mio primo tutorial, per cui non me ne vogliate se alcuni passaggi vi sembreranno criptici o senza senso :)
Notizie sul programma
Ecco il Crackme 91....
Cosa c'è da dire su questo crackme??? È IN VB E IO ODIO IL VB!!!!!
A parte gli scherzi il prg si presenta come una prima schermata in cui Robert Langdon (non lo conoscete??? allora andatevi a leggere il libro.... :) deve superare diverse peripezie per aprire la porta dietro cui è imprigionata la sua amata BLA BLA BLA ecc ecc.
Letto ciò arriviamo in una seconda pagina in cui compaiono diverse immagini (l'uomo Vitruviano, un paio di immagini della Gioconda, una scena tratta dal film, una parte degli indizi tratti dal libro), le istruzioni del crackme, la finestrella in cui inserire il codice, il tasto da premere per verificare la password e poco altro.
Tool usati
- Ollydbg (con le dovute attenzioni, scoprirete poi perché...)
- Smartcheck (anche qui dovete fare prima un po' di attenzione...)
- una tabella dei codici ASCII http://www.asciitable.it/ascii.asp
Essay
Inseriamo un codice a caso per provare (io di solito uso 112233...), premiano la chiave e non succede nulla... (che sfiga, di solito sono più fortunato...).
Carichiamo il crackme in Olly e per prima cosa veniamo informati che probabilmente il codice è compreso, criptato o contiene dati che non riesce a capire neppure lui; non preoccupiamoci diamo l'ok a continuare e diamo subito un'occhiata alle text reference per vedere se per caso vediamo qualche cosa di interessante...
Come potete notare vi è una gran quantità di testo che ad una prima occhiata sembra un'accozzaglia di caratteri senza senso (non fateci caso lo capirete più avanti...), arrivati quasi alla fine notiamo questo:
0042F108 UNICODE ".exe",0
0042F118 UNICODE "Ollydbg."
0042F128 UNICODE "exe",0
........ (omississ)
0042F5E8 UNICODE "\\.\SICE"
Non so a voi, ma a me queste stringhe non piacciono proprio per nulla, infatti se proviamo a eseguire il crackme con Olly in esecuzione, dopo la solita schermata di presentazione, veniamo avvisati che abbiamo fatto i cattivi e dovremo andare a letto senza cena :(( , ci butta fuori dal crackme e chiude il programma rilevato...
La stessa storia se proviamo a lanciare il prg con Smartcheck aperto....
Provare con Sice ed otterrete lo stesso risultato...
In pratica verifica se sono attivi i processi (Olly e Smartchek) o se esiste al directory di Sice e dà dei simpatici messaggi di errore uscendo dal crackme.
Cosa facciamo per evitare ciò??? Eliminiamo i riferimenti a Olly, Smartchek e Sice semplicemente spostandoci agli indirizzi in cui vengono definiti e tasto destro/bynary/Fill with NOP's ed il gioco è fatto.
P.S. Ricordatevi di a questo punto di salvare il file modificato!!!!
Adesso cominciamo con la ricerca del codice di sblocco di questo crackme, carichiamolo in Smartchek e lanciamolo.
Dopo un'attesa interminabile in cui il protagnista BLA BLA BLA e dopo 13000 e passa righe di report, arriviamo al punto in cui dobbiamo inserire il codice.
Prima però diamo un'occhiata al report e vediamo che, dopo una serie di TmrGrz_Timer che servono per dare l'effetto di testo scorrevole alla schermata iniziale, viene definita la finestra in cui inserire il codice.
Ci balza subito all'occhio che viene presa una delle stringhe (apparentemente senza senso) viste in precedenza in Olly.
Di questa stringa viene contato il numero dei caratteri (75)
e ad ognuno viene sottratto 13 al suo corrispondente valore decimale nella codifica ASCII fino ad ottenere la stringa "INSERISCI IL CODICE CHE TI PERMETTE DI APRIRE LA PORTA E PREMI .....".
Provate a fare il controllo a mano con una tabellina dei codici ASCII... ;)
Successivamente viene presa una seconda stringa che subisce lo stesso trattamento.
Capito perché in Olly si vedevano un mucchio di stringhe senza senso??? Erano tutte criptate!!!!
Proviamo ora ad inserire il nostro bel codicillo (come ho già detto io uso di solito 112233) e vediamo cosa succede....
1. vengono contati i caratteri inseriti (6);
2. ad ogni carattere viene sommato 13 al valore decimale della codifica ASCII fino ad ottenere la stringa >>??@@
3. viene comparato con la stringa @Aba?Q`aBE^W
OK adesso non dobbiamo fare altro che risalire ai caratteri che codificati danno questo risultato, armiamoci quindi di carta e penna e facciamo un paio di conti:
- prendiamo il primo carattere (@)
- guardiamo il valore decimale nella codifica ASCII (64)
- sottraiamo 13 (51)
- guardiamo a che carattere corrisponde (3)
- passiamo a carattere successivo e ricominciamo dal passo n° 1
Alla fine dovremmo essere arrivati ad ottenere 34UT2DST58QJ
Proviamo ad inserire il codice e Voilà siamo arrivati nella pagina successiva in cui ci vengono fatti i complimenti e ci viene chiesto di inserire un'ulteriore codice (pensavate di essere già arrivati alla fine vero????) che da come risultato quello riportato a video (1-54576-54576-59124-13644-54576-62156-13644-62156-1516-68220-).
Inseriamo ancora il nostro fake number (112233), premiano la chiave e guardiamo cosa ci dice Smartcheck.
In questa pagina vengono fatti degli strani conti sul nostro codicillo fino ad ottenere una prima sequenza di cifre molto simile a quella che cerchiamo: 68220-68220-54576-54576-62156-62156- mentre nel passaggio dopo viene piazzato davanti a tutto un bel 1- che lo rende molto somigliante a quello che stiamo cercando.
Visto ce le mie conoscenze di VB sono pressoché nulle possiamo fare alcune ipotesi: notando che il codice ottenuto è composto da 6 pacchetti di numeri uguale al numero delle cifre del mio fake number e che sono ripetuti due a due (come il mio fake number...) possiamo ragionevolmente credere che da ogni cifra sia ricavato ogni pacchetto.
Partiamo quindi per tentativi, inseriamo come fake number 1234567890 ed otteniamo 1-68220-54576-62156-69736-56092-65188-59124-71252-60640-66704-
Possiamo quindi vedere che i pacchetti di cifre ottenute ci permettono di ricostruire in parte la password di questa pagina 227X23X3Y1 in cui X e Y sono due pacchetti che non siamo riusciti a calcolare perché presumibilmente non sono cifre ma caratteri; proviamo quindi con abcdef ed otteniamo 1-25772-13644-31836-39416-21224-1516- in cui compaiono i due pacchetti mancanti X=b e Y=f.
Proviamo così la password calcolata (227b23b3f1) ed arriviamo ad una terza pagina (stavolta è l'ultima :)) e ci viene chiesta una terza password.
Affidiamoci ancora al nostro fidato fake number e guardiamo il responso di Smartcheck.
Il nostro codice viene codificato nel solito e ormai ben conosciuto modo (aggiungendo 13 ecc. ecc.) e viene comparato con \PPUV`\__V`\`PVR[gNZ\_aR]\_aN
che decriptato da: OCCHISORRISOSCIENZAMORTEPORTA
Inseriamo la password ricavata e Volià eccoci arrivati alla fine :))
Note Finali
Spero di essere stato chiaro.Un saluto a tutta la UIC!!!!
Disclaimer
I documenti qui pubblicati sono da considerarsi pubblici e liberamente distribuibili, a patto che se ne citi la fonte di provenienza. Tutti i documenti presenti su queste pagine sono stati scritti esclusivamente a scopo di ricerca, nessuna di queste analisi è stata fatta per fini commerciali, o dietro alcun tipo di compenso. I documenti pubblicati presentano delle analisi puramente teoriche della struttura di un programma, in nessun caso il software è stato realmente disassemblato o modificato; ogni corrispondenza presente tra i documenti pubblicati e le istruzioni del software oggetto dell'analisi, è da ritenersi puramente casuale. Tutti i documenti vengono inviati in forma anonima ed automaticamente pubblicati, i diritti di tali opere appartengono esclusivamente al firmatario del documento (se presente), in nessun caso il gestore di questo sito, o del server su cui risiede, può essere ritenuto responsabile dei contenuti qui presenti, oltretutto il gestore del sito non è in grado di risalire all'identità del mittente dei documenti. Tutti i documenti ed i file di questo sito non presentano alcun tipo di garanzia, pertanto ne è sconsigliata a tutti la lettura o l'esecuzione, lo staff non si assume alcuna responsabilità per quanto riguarda l'uso improprio di tali documenti e/o file, è doveroso aggiungere che ogni riferimento a fatti cose o persone è da considerarsi PURAMENTE casuale. Tutti coloro che potrebbero ritenersi moralmente offesi dai contenuti di queste pagine, sono tenuti ad uscire immediatamente da questo sito.
Vogliamo inoltre ricordare che il Reverse Engineering è uno strumento tecnologico di grande potenza ed importanza, senza di esso non sarebbe possibile creare antivirus, scoprire funzioni malevoli e non dichiarate all'interno di un programma di pubblico utilizzo. Non sarebbe possibile scoprire, in assenza di un sistema sicuro per il controllo dell'integrità, se il "tal" programma è realmente quello che l'utente ha scelto di installare ed eseguire, né sarebbe possibile continuare lo sviluppo di quei programmi (o l'utilizzo di quelle periferiche) ritenuti obsoleti e non più supportati dalle fonti ufficiali.






