Corso UIC Newbies 06 Pispola
From UIC
Corso UIC Newbies 06 Pispola&Co
Contents |
| Infos | |
|---|---|
| Author: | Pispola&Co |
| Email: | pispola_@tin.it |
| Website: | Home page |
| Date: | 27/09/2000 (dd/mm/yyyy) |
| Level: |
|
| Language: | Italian |
| Comments: | |
Tools
- Softice oppure OllyDbg v1.10
- Regmon
Link e Riferimenti
Questo è il Corso UIC Newbies n°06 disponibile alla pagina Corsi UIC Newbies
Introduzione
Non Perdiamo Tempo ;-)
Notizie sul Programma
Questo e' un CrackMe ideato da AndreaGeddon per farci capire le 2 palle che ti vengono quando devi Toccare il registro di Windog
Essay
Allora Eccoci difronte ad un altro appuntamento con Un CrackMe di Andrea:
1° livello
Avanti, Visto che dobbiamo sniffare cosa il programma legge dal registro di Windoz mettiamo in esecuzione il Prog. Regmon (che da ora chiamero' Reg) e vediamo che ci consiglia.
Facciamo partire il Target e vediamo che Reg ci dice
OpenKey HKCU\AndreaGeddon -> Result : NOT FOUND.
PS. Siccome vicino a me c'e' Raabbit mi permetto di scrivere qualche impressione o frase usata da lui.
Bha che serva una chiave Chiamata AndreaGeddon nella HKEY_CURRENT_USER? Proviamo a crearla e vediamo che dice
doppio Click sulla riga dove il Reg ci dice NOT FOUND e ci troviamo nel registry,Selezioniamo HKEY_CURRENT_USER tasto Destro Nuovo Chiave e digitiamo il nome della chiave AndreaGeddon Chiudiamo Regedit e riproviamo.
Ben fatto il primo livello e' superato. Ma che cazzata tutto qui?
2° livello
pigiamo il 2 tastino e il reg ci dice che non puo' aprire la sottochiave 1 di AndreaGeddon :
OpenKey HKCU\AndreaGeddon\1 -> Result : NOT FOUND.
E noi la creiamo, ripigiamo il 2 tastino e ci dice che non e' del tutto giusta infatti il Reg ci segnala un NOT FOUND su :
OpenKey HKCU\AndreaGeddon\1\2 -> Result : NOT FOUND.
Vabbe' si crea la sottochiave 2 Ma non e' sufficente il Target ci chiede la sottochave 4
OpenKey HKCU\AndreaGeddon\1\2\4 -> Result : NOT FOUND.
Ok creiamola e vediamo se ce ne sono ancora molte perche' mi son rotto un pochino ;-))))) COOL ! e' fatta si passa al 3 livello
3° livello
Pigiamo e : Sei in un mondo Fittizio.......
Hmmm che serve ? vediamo il Reg
OpenKey HKCU\AndreaGeddon\WhatIsTheMatrix -> Result : NOT FOUND.
E creiamo la chiave WhatIsTheMatrix , Ma Andrea non e' ancora contento (che vorra questo baldo Giovane) ;-)
riguardiamo il Reg. evediamo un Query Value Ex
QueryValueEx HKCU\AndreaGeddon\WhatIsTheMatrix\WelcomeToTheRealWorld -> Result : NOT FOUND.
A questo punto non creeremo una chiave ma una Stringa all'interno di HKCU\AndreaGeddon\WhatIsTheMatrix
Ed assegnamo un valore a caso (visto che non sappiamo quello Giusto). io inserisco Pispola ed il Reg ci risponde cosi:
QueryValueEx HKCU\AndreaGeddon\WhatIsTheMatrix\WelcomeToTheRealWorld -> Result : SUCCESS 50 69 73 70 6F 6C 61
Cioe' il valore che abbiamo dato alla stringa gli va anche bene per aprire la chiave ma ci dice anche :
CloseKey ->Result: BADKEY (La chiave non e' Esatta)
e quale sara' la chiave giusta ? A questo punto cominciamo a tracciare il programma con sice.
BPX su RegQueryValueExa ,
F12 e ci troviamo in questo punto
Steppiamo un po' (F8) ed ariviamo a questa istruzione
mio nome (50)
004017B4 mov cl, byte ptr [esp+edi+18] e qui viene caricato il carattere T (54)
004017B8 cmp al, cl in questo punto avviene il confronto
Atroce dubbio sorge nella nostra mente :
editiamo cosa contiene edi+ebx ( in sice D edi+ebx) = Pispola ops il mio valore inserito editiamo cosa contiene esp+edi+18( in sice D esp+edi+18) = Trinityy Che sia il valore corretto ? ora proviamo. :-) andiamo a cambiare il valore nel Registry da Pispola a Trinityy e vediamo
4° livello
Apriamo ancora Reg e vediamo che cerca la chiave :
OpenKey HKCU\AndreaGeddon\Sergej\Rachmaninov -> Result : NOT FOUND.
La creiamo (Speriamo siano finite). ripigiamo il 4 tastino e ops... non e' ancora finita.... il reg ci segnala che serve una stringa chiamata QualBuonVento (Notare il QueryValueEx )
QueryValueEx HKCU\AndreaGeddon\Sergej\Rachmaninov\QualBuonVento -> Result : NOT FOUND
Ed andiamo a creare sto valore. Ma quando riproviamo a registrarci ci dice che la Key e' Bad ........ Che si fa ? Chiamiamo in aiuto il Buon Sice come al livello 3
BPX su RegQueryValueExa ,
F12 e ci troviamo in questo punto
(Nota tracciando con F8 si nota che l'unico Cmp che incontriamo e' quello in 00401902 e se invertiamo lo Zero Flag il Programmillo ci registra) :-p
Noi invece andiamo a mettere un valore a caso in QualBuonVento.
004018A0 je 004018B3
004018A2 push 00000010
004018A4 push 00404608
004018A9 push 004045D4
004018AE jmp 00401966
004018B3 mov edi, esi
004018B5 or ecx, FFFFFFFF
004018B8 xor eax, eax
004018BA xor edx, edx
004018BC repnz
004018BD scasb
004018BE not ecx
004018C0 dec ecx
004018C1 je 004018DC
004018C3 mov al, byte ptr [edx+esi] // Carica il primo carattere del valore della chiave
004018C6 mov edi, esi
004018C8 add al, dl
004018CA or ecx, FFFFFFFF
004018CD mov byte ptr [edx+esi], al
004018D0 xor eax, eax
004018D2 inc edx
004018D3 repnz
004018D4 scasb
004018D5 not ecx
004018D7 dec ecx
004018D8 cmp edx, ecx // vede se ci sono ancora caratteri nella nostro valore
004018DA jb 004018C3 // Altrimenti riesegue il ciclo
004018DC mov edi, esi
004018DE or ecx, FFFFFFFF
004018E1 xor eax, eax
004018E3 xor edx, edx
004018E5 repnz
004018E6 scasb
004018E7 not ecx
004018E9 dec ecx
004018EA je 00401902
004018EC mov al, byte ptr [edx+esi] // Qui riprende i nostri 4 caratteri Modificati dal primo Ciclo
004018EF mov edi, esi
004018F1 add bl, al // E qui li somma
004018F3 or ecx, FFFFFFFF
004018F6 xor eax, eax
004018F8 inc edx
004018F9 repnz
004018FA scasb
004018FB not ecx
004018FD dec ecx
004018FE cmp edx, ecx // E qui si controlla se e' finito
00401900 jb 004018EC // Altrimenti salta
00401902 cmp bl, D1 Controlla se siamo stati bravi (in EBX si vede il risultato da noi
ottenuto fino a questo punto)
00401905 jne 0040195A // E ci registra
Si nota che nel secondo ciclo il 1 carattere del codice rimane invariato mentre gli altri 3 sono aumentati Siccome ho avuto una botta di culo (sotto consiglio di Raabbit ) e 1234 danno somma finale e' D0 aumentero' di uno il primo carattere che diventera' 2234.
schiaccimo il tastino ed eccoci nell'olimpo .
Note Finali
Non e' stato difficile e sicuramente abbiamo imparato a creare le chiavi nel registro ;-))
<Raabbit> I primi 2 Livelli sono stati molto facili e gli alti un po' meno ma nel complesso Bello :-)
Eccoci ai saluti Tutto Crack-it e UIC ,Spin0ne Per la sua dritta (un giorno per capire che era WhatIs e non Whatls :-( ) , Andrea per il tempo che perde a farci i Corsi Quequero che non fa + nulla e lo FA fare a Andrea . e tutti quelli che non abbiamo menzionato...Ah, grazie per avermi dato del fannullone :) NdQue
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.