Zoom Icon

Corso UIC Avanzato 01

From UIC Archive

Corso UIC Avanzato 01

Contents


Corso UIC Avanzato 01
Author: Quequero
Email: Que addr.gif
Website: http://quequero.org
Date: 01/09/1999 (dd/mm/yyyy)
Level: Working brain required
Language: Italian Flag Italian.gif
Comments:



Link e Riferimenti

Questo è il Corsi UIC Avanzati n°01 disponibile alla pagina Corsi per Studenti


Introduzione

Benvenuti nel primissimo progetto della UIC, in questo documento vi verrà spiegato il funzionamento di un determinato tipo di protezione utilizzato dai programmatori, e poi vi verrà chiesto di crackare un semplicissimo programma scritto per l'occasione, il limite di tempo è per il 1° settembre dopo di che tutte le soluzioni che arriveranno non saranno ritenute valide, buon lavoro.


Essay

Allora ragazzi, quest'oggi si parla di cracking vero e proprio, vi è mai capitato di andare nel menu di registrazione di qualche programma e di aver trovato un altro menu nel quale vi veniva chiesto di inserire nome e numero? Bhè sicuramente si, dal momento che questo è il sistema di protezione più utilizzato, in questo corso spiegherò il funzionamento di questa protezione e vi spiegherò come è possibile crackarla senza dover studiare l'algoritmo per farne un keymakerUn programma per la generazione di numeri di registrazione validi.

Una volta inserito un nome (Quequero) e premuto OK il programma non fa altro che calcolare con una routine proprietaria un numero, che va poi a confrontare con il numero inserito da noi, se combaciano allora si ha la registrazione con tutti i suoi vantaggi, potremmo quindi comprare il codice legalmente ma anche così non scopriremmo ciò che ci interessa cioè: come è protetto il programma. Con un po' di Zen scopriamo subito che le vie di registrazione possibili sono: forzare la registrazione stessa cambiando qualche jmp, far credere al programma di essere registrato cambiando il codice che all'avvio va a cercare nel registro il seriale, oppure creare un keygenerator. La soluzione che adotteremo oggi sarà la prima, ma non disperate, nei prossimi corsi spiegheremo tutte le altre.

Bene bene, una volta avviato un programma con questo tipo di protezione avrete circa tre possibilità per brekkare all'interno del codice e queste sono:

  • mettere un breakpoint su GetWindowTextA, in sice: bpx GetWindowTextA
  • mettere un breakpoint su GetDlgItemTextA, in sice: bpx GetDlgItemTextA
  • mettere un breakpoint su hmemcpy, in sice: bpx hmemcpy

Fatto ciò, in ognuno dei tre casi premete ok e sice popperà, uscite dalla chiamata con F11 e fate F12 finché sulla barra verde in basso non vedete scritto il nome del programma al posto di Kernel32!....Oppure User32!..ecc...

Steppate come siete soliti fare con F10-F8 e cercate la/le chiamata/e che genera/no il seriale, una volta oltrepassata la call che fa i vari calcoli potreste avere il serial in qualche registro o nello stack in forma crittata o più semplicemente in forma pura, state attenti perché spesso una chiamata calcola un seriale ed una seconda chiamata fa dei calcoli sul numero pervenuto ecc...Passate tutte le chiamate il programma certamente farà un check sul risultato e deciderà se il seriale era esatto o meno, bene questo è il momento nel quale dovrete agire. Vi do alcuni consigli, spesso e volentieri troverete qualcosa del genere: call 00412345 test eax, eax jnz giusto_seriale call MessageBoxA // Seriale errato in pratica la chiamata riporta 1 in eax se il serial era esatto, e 0 se era sbagliato, anche se può essere il contrario, altre volte avrete avanti cose del genere: mov eax, tuo_serial mov ebx, serial_esatto cmp ebx, eax jne Beggar_off call MessageBoxA // Registrazione esatta in pratica se andrete a spulciare nel registro avrete in questo caso chiaramente il serial, per crackare queste due protezioni basta solo forzare i jump, potete anche trovare dei check multipli e spesso il serial viene Xorato (andate a leggere il mio articolo sull'utilizzo dello Xor alla UIC) per non essere reso visibile in questo modo: mov eax, tuo_serial mov ebx, serial_esatto xor eax, qualche_valore xor ebx, stesso_valore_di_sopra cmp ebx, eax je Registrazione_Avvenuta in pratica il vostro serial non si vede prima del check ma a voi non interessa perché tanto quello che dovete fare è forzare il jump.

Ok per questa lezione ci fermiamo qui dal momento che questo metodo è il primo che si impara, impareremo altre tecniche nelle prossime lezioni e se tutti gli iscritti finiranno prima del 1° settembre la seconda lezione comparirà anch'essa prima.

Obiettivi

  • Crackare il programma in modo da far apparire il messaggio di registrazione avvenuta avvalendosi solo di SoftIce e cambiando il MINOR NUMERO POSSIBILE di istruzioni
  • Scrivere un tutorial dettagliato sui check del programma
  • Opzionale trovare il seriale esatto
  • Opzionale spiegare come viene generato il seriale
Quequero


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 malevole 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.