Gennaio 1999

"Winamp 2.0x"

Win '9x PROGRAM Win Code Reversing  

 

by Quequero 

 

 

Code Reversing  

   

 

  Dove si trova: Qui Dimensione: 517K   

 
 

    Programmi usati: Softice 3.2 - Debugger

 

Difficolt�

Easiest ( X ) Easy (   )  Medium (   )  Hard (    )  Pro (    ) 

There is a crack, a crack in everything. That's how the light gets in.(The Sandman)

 

 


                                                         Winamp 2.0x

                               ( Un numero troppo facile da trovare )

                                                    Scritto da Quequero
 
 

Introduzione

Gli autori di questo programma possono essere contattati su: http://www.winamp.com

Cosa dicono gli autori:
"Winamp � l'ultima piattaforma di ascolto per Windows 95/98. 
P�o riprodurre file .wav, .mp3 e .mpg. ecc..."

 

Parliamo del sistema di registrazione

 
La registrazione avviene tramite un box all'interno del men� di Winamp, vengono richiesti:-
 
Nome          :
Numero seriale    :
Il codice di registrazione viene calcolato in base al nome, il pulsante di ok � per� disabilitato e viene abilitato solo se il codice � giusto. Il numero normalmente non varia in lunghezza.
 
Una volta registrato il programma salva il nome ed il serial in:
 
C:\Programmi\Winamp.ini i dati assumono questa forma:
 
[Winamp]
RegisteredTo=Quequero!!!95423428
 
      Non copiare il mio numero ma creane uno da solo, non credi sia pi� divertente          ed utile?
 

 

Vediamo cosa possiamo fare 

Allora per prima cosa apriamo Winamp e col pulsante destro del nostro topo clicchiamo da qualche parte ed entriamo in "Winamp..." andiamo su "Shareware" e poi su "Enter Registration info", un bel box far� la sua comparsa chiedendoci di inserire un nome ed un valido numero...bene, potremmo mettere un breakpoint sulla funzione MessageBoxA ma non possiamo perch� il pulsante "OK" � disabilitato...� un problema? Credo proprio di no, proviamo allora a   mettere un bp sulla funzione GetDlgItemTextA e poi inseriamo una lettera tanto per vedere se v�? Ctrl+D per entrare in SoftIce, bpx GetDlgItemTetxA...invio e F5 per tornare a windows, scriviamo per esempio...A e subito appare il nostro debugger preferito. Bd 00 per disabilitare questo bp e poi inseriamo il nostro nome tranne l'ultima lettera, (io ho inserito Quequer) rientriamo nel debugger e scriviamo be00 per riabilitare il bp, f5 e poi aggiungiamo l'ultima lettera, come ci aspettavamo riappare softice, ora siamo all'interno della funzione: GetDlGItemTextA, Premiamo F11 per uscirne fuori e diamo un occhiata al codice che si trova davanti ai nostri occhietti bramosi....
 
015F:0041E6D5     PUSH 00 <------------------Siamo approdati qui
015F:0041E6D7     PUSH 00
015F:0041E6D9     PUSH 0000048C
015F:0041E6DE     PUSH ebx
015F:0041E6DF     CALL [User32!GetDlgItemInt]
015F:0041E6E5     MOV ESI, EAX
015F:0041E6E7     LEA EAX, [ESP+10] <----------ESP+10 contiene il nostro nome
015F:0041E6EB     PUSH EAX
015F:0041E6EC     CALL 004201E0 <-------------Diamo un'occhiata qui>
015F:0041E6F1     ADD ESP, 04
015F:0041E6F4     CMP EAX, ESI <----------------Confronta EAX con ESI
015F:0041E6F6     JNZ 0041E703 <----------------Sono uguali? se non lo sono salta
015F:0041E6F8     CMP BYTE PTR [ESP+10], 00 <--------- ESP+10 = Quequero
015F:0041E6FD     JZ 0041E703 <-----------------------salta se il codice non � giusto
015F:0041E6FF     PUSH 01 <------------------- se il codice � giusto allora si arriva qui...
015F:0041E701     JMP 0041E705 <------------- e poi si salta....
015F:0041E703     PUSH 00
015F:0041E705     PUSH 01 <-------esattamente qui, il pulsante viene abilitato
 
Possiamo vedere all'indirizzo 015F:0041E6F4 un'istruzione interessante: perch� si dovrebbero confrontare due registri? Bh� vediamolo, proviamo a scrivere: ? eax...et voli�! abbiamo trovato il nostro numero, segniamolo ed andiamo a provarlo....a me funziona, a voi? Come avete potuto vedere � stato molto facile, se noi avessimo inserito un falso numero questo sarebbe stato contenuto dal registro ESI e sarebbe stato confrontato con il vero numero che stava in EAX. Per questo programma ho individuato altri due possibili modi di attacco, sapreste indicarmeli?
 
Gioco fatto.....

 

Il 'Crack'

Non richiesto...

 

Note

 

Questo tutorial ha dimostrato come poter attaccare un sistema di protezione apparentemente "tosto". Nel caso vi capitasse un'altro programma che utilizzi lo stesso metodo ma che non usi la funzione GetDlgItemTextA provate a mettere un bp sulla funzione hmemcpy.

Ringrazio ED!SON per il suo magnifico tutorial e The Sandman che mi ha aiutato a capire come funzionavano i sistemi di protezione. 

 

Dho!

Vorrei ricordare che questo documento � stato scritto solo a scopo didattico e che il software va comprato e non rubato.

Se stai cercando crack o simili sei pregato di andare altrove.

Ciao e buon Crack a tutti.

Quequero.

Per eventuali comunicazioni o segnalazioni il mio indirizzo �: [email protected]