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
- 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.....
Non richiesto...
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.
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]