Pacchetto Ricevitoria 2000 Professional Pack
(Individuiamo l'algoritmo che genera la chiave per i 16 programmi del pacchetto)


26-11-99

by "GR!SU"

UIC's Home Page

Published by Quequero


Qualcuno ha affermato che l'arte di crackare

Bravo GR!SU, veramente un bel tutorial per chi iniza....cmq un giorno mi devi spiegare come si fa a fare un form così brutto....meno male che ci sto io a sistemarlo :)

è una NOBILE arte…...ha ragione!!!
UIC's form
E-mail: [email protected]
On IRC: GR!SU' or Seg015F CHANNEL#crack-it
UIC's form

Difficoltà

( )NewBies (X)Intermedio ( )Avanzato ( )Master

Analizziamo uno dei sedici programmi del pacchetto e precisamente LottoSthudioProfessional 1.2


Pacchetto Ricevitoria 2000 Professional Pack
(Individuiamo l'algoritmo che genera la chiave per i 16 programmi del pacchetto)

Written by GR!SU'

Introduzione

In questo tutorial troveremo insieme i codici di registrazione ed individueremo l'algoritmo per creare un Key Maker.

Tools usati

SoftIce 3.2x
W32dasm 8.9x

URL o FTP del programma

Può essere richiesto in prova gratis per 30 giorni direttamente a Progetto Software

Notizie sul programma

Il programma che andremo ad esaminare è uno dei 16 programmi di sistemistica Lotto, Totocalcio, Enalotto, Totogol e Totosei contenuti nel pacchetto Ricevitoria 2000 Professional Pack distribuito da Progetto Software, naturalmente, noi ne esamineremo solo uno perché tutti gli altri utilizzano lo stesso algoritmo di generazione della chiave. inoltre tutto questo è valido anche per il programma FanthaManager.

Essay

Allora….Allora…. Iniziamo!!!!
Come al solito iniziamo con l'esaminare il programma per cercare di reperire il maggior numero di informazioni possibili per poter capire come e in che modo occorre attaccarlo. La software House dice che per poter registrare il programma dopo il periodo di valutazione di 30 giorni occorre telefonare ai propri numeri per poter ricevere un numero di serie, che una volta inserito nel box indicato e dopo aver premuto il pulsante "Genera Codice", verrà generato un Codice che occorrerà comunicare alla stessa la quale a sua volta ci fornirà la Chiave che una volta digitata ci farà registrare definitivamente il Programma. Bene bene , già questo ci dice molto…..che cosa!!?? Ve lo dico immediatamente, il numero di serie , cioè il primo numero che ci verrà comunicato, praticamente non serve a niente o quasi, cioè dovrebbe, e dico dovrebbe secondo la House complicarci la vita , però il fatto che lo comunicano loro significa che sarà uguale per tutti o al massimo potrebbero esserci vari numeri di serie ma uguali per tutti, quindi occorre trovare prima questo numero altrimenti non potremmo generare il Codice che a sua volta ci genera la chiave quindi questo significa che è tramite il nostro numero di codice (che come vedremo varia ad ogni installazione) che viene generata la chiave quindi il numero di serie serve solo ad abilitare l'algoritmo di generazione del codice che a noi non interessa come lo elabora al contrario ci interessa invece l'algoritmo di generazione della Chiave. Dopo questa ingarbugliata spiegazione iniziamo il nostro lavoro.

Proviamo ad inserire un numero di serie qualsiasi ,premiamo Genera Codice e vediamo cosa succede , niente neanche una Message Box questo significa già che uno dei pochi sistemi per attaccare (ma ce ne sono altri) potrebbe essere quello di usare un BPX Hmemcpy ma non ve lo consiglio perché in questo modo dovremmo passare buona parte della giornata a steppare L , optiamo quindi per un'altra soluzione. Facciamo Ctrl-D ed entriamo nel nostro fidato Debugger e settiamo BPX SetFilePointer, Invio e poi F5 per uscire ora quindi quando andremo a premere "Genera codice" popperemo in Sice facciamo F12 per uscire dalla funzione e ci ritroviamo nella Prgwaux.dll, facciamo ancora F12 fino a che ci ritroviamo nel nostro LottoSthudioPro ed esattamente Qui. Se ora iniziamo a steppare, a 004CB86C troviamo un JLE che se invertiamo fa si che il il Prg. accetti qualsiasi numero di serie e ci genera il Codice, ma siccome noi non vogliamo Patchare ma vogliamo trovare in Numero di Serie corretto, deduciamo evidentemente che dobbiamo analizzare la parte di codice precedente al su detto JLE. Mettiamo quindi un BPX su 004CB856

:004CB856 push ebx ß Settiamo qui un BPX
:004CB857 Call 004CB110 ß Faccio F8 poi F10 fino alla Call successiva (che per questo Prg è 015F:007B1CFA) Qui troviamo l'algoritmo che CMP il mio numero di serie con quello corretto
:004CB85C Call 004CB100
:004CB861 mov esi, eax ß Qui
:004CB863 Call 004CB0F0 ß Date un occhiata anche a questa Routine se il numero inserito è esatto me lo riporta in EAX altrimenti EAX=00
:004CB868 mov ebx, eax
:004CB86A test ebx, ebx
:004CB86C jle 004CB8C3 ß Salta se il numero non è esatto

Andatevi a studiare la routine che effettua il compare (015F:007B1CFA in PrgSwAux.dll) scoprirete che il numero di serie, può essere un qualsiasi numero decimale che convertito in Hex (esadecimale) risulti in questa forma raddoppiata (es. 5F5F oppure 1515 o ancora 1919 o 2121) cioè in pratica scegliete qualsiasi numero Hex in questa forma convertitelo in decimale ed inseritelo nel Box "Numero di serie" premete Genera ed otterrete un Codice in questa forma:XXXX XX XXXXXXXX XXXXXXXX X i primi quattro caratteri e i successivi due non sono, come vedremo in seguito, utilizzati mentre i successivi otto caratteri variano al variare del numero di serie inserito, gli altri otto invece variano ad ogni nuova installazione del programma,l'ultimo non è usato,in questo modo (hanno pensato gli autori)si ottiene un Codice unico e diverso per ognuno di noi tramite il quale la Soft House ci crea la Chiave di registrazione. Ora è proprio qui che entriamo in campo NOI.

PS. La parte di testo evidenziata in verde è valida solo per i Programmi LottoSthudioStandard e LottoSthudioProfessional,(forse è un Bug che hanno corretto) per gli altri, l'algoritmo è sempre lo stesso (c'è una piccola differenza) solo che accetta un unico numero di serie, sempre nella stessa forma raddoppiata cioè tipo 1515, 5F5F, che è unico per ogni programma, purtroppo ora non posso trattarli tutti, ma la procedura ed il punto in cui elabora l'algoritmo è lo stesso variano solo gli indirizzi.

QUALE E'L'ALGORITMO CHE GENERA LA CHIAVE ?

Inseriamo una Chiave qualsiasi, entriamo in Sice e settiamo nuovamente BPX SetFilePointer invio e poi F5 per uscire premiamo quindi OK ed ecco che Sice poppa facciamo F12 fin che ritorniamo in LottoStudioPro ed esattamente in questo punto

:004CB75E Call 004CB100 ß Noi siamo Quì
:004CB763 mov edi, eax ß In Eax troviamo la seconda serie di otto caratteri del codice non in Hex ma così come li vediamo scritti nel Box mentre in Ebx c'è la chiave da noi inserita, (provate in Sice ? EBX)
:004CB765 Call 004CB0F0
:004CB76A mov esi, eax ß In Eax troviamo il Numero di serie (? EAX), mentre in Ebx c'è la Chiave da noi inserita (? EBX)
:004CB76C test esi, esi ß Controlla se è presente il Numero di Serie
:004CB76E jle 004CB797 ß Salta se non è presente
:004CB770 test ebx, ebx ß Controlla se è stata inserita la Chiave
:004CB772 jle 004CB797 ß Salta se non c'è
:004CB774 push esi ß Numero di Serie
:004CB775 push edi ß Seconda serie di Otto caratteri del codice
:004CB776 Call 004CB0E8 ß Contiene l'algoritmo, Facciamo F8
:004CB77B cmp ebx, eax ß In Ebx c'è la chiave da noi inserita, in Eax c'è quella esatta che ci permette di registrarci (? EAX)

Dopo aver esaminato questa ultima parte di codice ci risulta evidente che l'algoritmo che genera la chiave si trova nella Call precedente, quindi a 004CB776 facciamo F8 ed entriamo nella routine che si trova in PrgSwAux.dll .

:00401BD4 push ebp ß Ora siamo Quì
:00401BD5 mov ebp, esp
:00401BD7 push ebx ß In Ebx c'è la Chiave da noi inserita
:00401BD8 mov eax, dword ptr [ebp+0C] ß Muove in Eax il Numero di Serie
:00401BDB push eax
:00401BDC call 00401488 ß Riporta in Eax la prima serie di otto caratteri del Codice

Quello che segue è L'algoritmo di generazione della chiave

*******************************************************************************

:00401BE1 lea ecx, dword ptr [eax+2*eax]
:00401BE4 mov ebx, 00009AC1 ß Valore fisso che in Decimale è 39617
:00401BE9 shl ecx, 05
:00401BEC add ecx, eax
:00401BEE lea ecx, dword ptr [eax+4*ecx]
:00401BF1 lea ecx, dword ptr [eax+2*ecx]
:00401BF4 mov eax, dword ptr [ebp+08]
:00401BF7 cdq
:00401BF8 idiv ebx
:00401BFA add ecx, edx
:00401BFC xor edx, edx
:00401BFE mov eax, ecx
:00401C00 mov ecx, 05F5E0FF ß Muove in Ecx la seconda serie di otto caratteri
:00401C05 div ecx
:00401C07 mov eax, edx
:00401C09 inc eax
:00401C0A pop ebx
:00401C0B pop ebp
:00401C0C ret 0008 ß Ritorna a :004CB77B ed effettua il Compare

*****************************************************************************

PS. Tutti gli indirizzi possono essere differenti.

Adesso praticamente abbiamo tutto quello che ci occorre, se vogliamo solo registrarci basta inserire i vari serial trovati, altrimenti potremmo creare un Key Maker, oppure potremmo far diventare (Patchandolo naturalmente!!)il programma stesso un Key Generator, in questo tutorial non tratterò però questa possibilità, potrete invece farlo voi prendendo spunto dagli ottimi Tut. di nOtEtA , KeYmaKer iN RuN-tiMe, invece per quanto riguarda il Key Maker, non penso ci sia niente da dire, l'algoritmo c'è lo avete, qualche linguaggio di programmazione dovreste conoscerlo (io uso l' Assembly),quindi datevi da fare.

Ha..!! dimenticavo di informarvi che i vari codici di registrazione li va a scrivere in Window\System\Qutk8bb0.Dll quindi se avete bisogno di fare delle prove per eliminare la registrazione ogni volta dovrete cancellare questo file che avrà ovviamente un nome diverso per ognuno dei 16 programmi, anche gli indirizzi sono diversi ,il procedimento però è lo stesso.

Spero di essere stato abbastanza chiaro.. J

CiAo da GR!SU'.....alla prossima.!!!

Note finali

Abbiamo visto come anche se si cerca di realizzare qualche protezione un pò più elaborata onde evitare la distribuzione dei seriali di registrazione , una volta trovato l'algoritmo si crea un Key Maker ed il problema è risolto. Da questo possiamo imparare come sia difficile trovare qualcosa di veramente sicuro (non credo che esista), quindi facciamo molta attenzione quando realizziamo le protezioni per i nostri programmi.

Ora non mi resta che, ovviamente Ringraziare QUEQUERO per la sua grande disponibilità e la UIC tutta ed in rigoroso ordine casuale tutti quelli che mi hanno aiutato a progredire in questa nobile ARTE (anche se alcuni di loro forse non lo sanno).

Un dovuto e sentito ringraziamento va' all'amico Sator SSH per avermi iniziato a questa Nobile Arte.
+ORC mitico Neural_Noise
, Scacco, CoRN2, ED!SON, raZZia, FROSTMAN, CbD, Qapla , +MaLattiA, along3x, Marcus, AloR, Xoanon, Int19, alt255 tutto il gruppo di RingZ3r0, tutti quelli che ho dimenticato ed anche quelli che non conosco.
Ed un ringraziamento va anche a nOtEtA
per avermi aiutato nella realizzazione del Key Maker .

Disclaimer

Vorrei ricordare che il software va comprato e non rubato, dovete registrare il vostro prodotto dopo il periodo di valutazione. Non mi ritengo responsabile per eventuali danni causati al vostro computer determinati dall'uso improprio di questo tutorial. Questo documento è stato scritto per invogliare il consumatore a registrare legalmente i propri programmi, e non a fargli fare uso dei tantissimi file crack presenti in rete, infatti tale documento aiuta a comprendere lo sforzo immane che ogni singolo programmatore ha dovuto portare avanti per fornire ai rispettivi consumatori i migliori prodotti possibili.

Noi reversiamo al solo scopo informativo e di miglioramento del linguaggio Assembly.


UIC's page of reverse engineering, scegli dove andare:

Home   Anonimato   Assembly    ContactMe  CrackMe   Links   
NewBies   News   Forum   Lezioni  
Tools   Tutorial 

UIC