Zoom Icon

Corso UIC Newbies 03 Guancy

From UIC

Totally NewBies 3°

Contents


Infos
Author: Guancy
Email: ilm_sat@yahoo.it
Website:
Date: 28/09/2000 (dd/mm/yyyy)
Level: Half brain is enough
Language: Italian Image:Flag_Italian.gif
Comments:

HighGrow! Secondo un mio amico un programma .... TROOOOPPO BEEEEEEELLO!


Introduction

This is my solution for NewBies Lesson n° 3.
Routine allows registration of program is very easy and the serial number is cleared in the code.


Tools


Link e Riferimenti

Questo è il Corso UIC Newbies n°03 disponibile alla pagina Corsi UIC Newbies


Notizie sul Programma

È un programma che ti permette di coltivare (virtualmente è ovvio) Marjuana! In sostanza è un prog. inutile (ma utile per i newbie) :))))))


Essay

HighGrow 1.21! Chi sa quanti fumatori incalliti si divertiranno! Penso però che anche i programmatori dovessero essere fumati quando hanno creato questo programmuzzo! Perché? Beh innanzitutto perché l'installazione è una palla mondiale e stimola l'utente solo a non usare il programma! Comunque la cosa più bella l' ho scoperta quando ho disassemblato il file Higrow.exe! Ero in cerca di una String Data Reference utile per craccare il programma e, leggendo le varie stringhe, ne ho notata una che diceva: "385-9015453-728" (assomiglia tanto ad un SN). Mi sono detto: "vuoi vedere che quelli della Slick Software sono talmente fumati da lasciare allo scoperto il serial che registra il loro prog? No non può essere". Vado a provare! Inserisco il codice che ho trovato con W32DSM e... voilà il programma ringrazia per essere stato registrato! Ah i programmatori di oggi! Cominciamo comunque a descrivere come si può procedere per trovare il SN mediante l'uso di SoftIce. Lo so che lo sappiamo già ma così è troppo facile non c'è gusto!

Serial Fishing with SoftIce

Siccome ho già inserito il seriale valido il programma si è registrato e quindi devo andare sull'editor dei registri di Window ed eliminare il serial number! Per far ciò clicco su Start ---> Esegui ---> regedit A questo punto sono entrato sull'editor e quindi cerco il valore 385-9015453-728 mediante l'utilizzo del comando Trova. Arrivato cancello il Sn e l'User Name! Bene ora possiamo pensare di scovare il seriale con SoftIce (ora in poi SICE)! Entrò all'interno del programma e vado subito su Enter Registration Code (o qualcosa di simile)! Metto un serial a caso (es: 666111666) e un nome a caso (es:GUANCY) premo OK. Vedo che compare una messagebox di errore e allora questo sarà il mio punto di partenza! Entro in SICE premendo CTRL+D e setto un bpx messageboxa Premo F5 per uscire da SICE! Premo di nuovo OK! SICE popperà! Premo F11 per uscire dalla Call e ricompare nuovamente la Messagebox! Premo OK e ritorno su SICE. Ovviamente ritorno a un punto del programma successivo alla call della messagebox e quindi per trovare qualcosa di utile devo dare uno sguardo indietro al codice ASM! Ecco come si presenta:

xxxx:00407F17 cmp eax, 0000000F controlla che il nostro SN sia di 15
cifre

xxxx:00407F1A je 00407F47 //se è di 15 cifre salta a 00407F47
xxxx:00407F1C push 00000030
xxxx:00407F1E push 0041E1AC
xxxx:00407F23 push 0041E2D4
xxxx:00407F28 push esi
xxxx:00407F29 Call dword ptr [00437620] //Message BOX di errore
xxxx:00407F2F push 00000456 //siamo giunti QUI!!!

Come si può notare all'indirizzo xxxx:00407F17 c'è un confronto fra il numero di lettere del nostro serial e la quantità di lettere che deve avere effettivamente il SN ovvero 15 (0000000F in base 16 = 15 in base 10). Se è di 16 cifre salta. Siccome noi dobbiamo per forza saltare all'indirizzo 00407F47, perché lì ci sarà il controllo del serial, cancelliamo il bpx messageboxa digitando bc* e settiamo un bpx 00407F1A Premiamo F5 per uscire da SICE e poi premiamo ancora ok per far sì che il programma ricontrolli il codice. SICE popperà e noi dovremo far eseguire questo salto. Lo faremo eseguire semplicemente cambiando la flag Z (Je ---> Jump if Equal cambia la flag Z)! Digitiamo r fl z ed esguiamo il salto! Ci ritroveremo qui!

xxxx:00407F47 mov eax, 0041E468//0041E468 --> EAX nostro SN)
xxxx:00407F4C mov edx, dword ptr [0041E0E8] //0041E0E8 --> EDX (SN Esatto)
xxxx:00407F52 mov cl, byte ptr [eax] sposta il cl il primo carattere
di eax

xxxx:00407F54 cmp cl, byte ptr [edx] confronta cl con il primo
caratte di edx

xxxx:00407F56 jne 00407F72 se non sono uguali salta all'indirizzo
00407F72

In questa parte di codice c'è tutto il controllo del serial! In eax c'è il nostro serial. Infatti se, giunti all'indirizzo xxxx:00407F4C digitiamo dd eax comparirà il nostro sn (nel mio caso 666111666). Quindi basterà andare all'indirizzo xxxx:00407F54 (ovvero dove si confrontano i 2 registri) e digitare dd ebx per trovare il SN esatto! Serial Fishing eseguito! Togliamo tutti i breakpoint (bc*) e usciamo da SICE (F5). Inseriamo un User Name a caso (infatti il prog. non fa nessun controllo relativo all'user name ma usa SEMPRE lo stesso sn) e il sn scovato! Tadà! Il programma si registrerà! Era ora! Bene! Concluso!

Patchare il programmuzzo

Ovvero inserire un qualsiasi serial e registrarsi lo stesso

Se avete letto con attenzione il codice ASM e se leggerete con attenzione il pezzo sottostante sarete in grado di craccarvelo da soli! Non mi soffermerò quindi molto! Vi dirò solamente, per facilitarvi le cose oppure per un controllo del vostro operato, quali sono i JUMP da modificare o Noppare!

xxxx:00407F58 or cl, cl//controlla che ci sia 1 carattere
xxxx:00407F5A je 00407F6E //se c'è salta all'indirizzo 00407F6E
xxxx:00407F5C mov cl, byte ptr [eax+01] sposta il secondo carattere
di eax in cl

xxxx:00407F5F cmp cl, byte ptr [edx+01] confronta cl con il secondo
carattere di edx

xxxx:00407F62 jne 00407F72//se non sono uguali salta all'indirizzo 00407F72
xxxx:00407F64 add eax, 00000002//incrementa di 2 eax
xxxx:00407F67 add edx, 00000002//incrementa di 2 edx
xxxx:00407F6A or cl, cl//controlla che ci sia 1 carattere
xxxx:00407F6C jne 00407F52 se non c'è nessun carattere salta a
00407F52 altrimenti vai avanti

xxxx:00407F6E xor eax, eax//azzera eax
xxxx:00407F70 jmp 00407F77//salta all'indirizzo 00407F77
xxxx:00407F72 sbb eax, eax
xxxx:00407F74 sbb eax, FFFFFFFF
xxxx:00407F77 test eax, eax//azzera eax
xxxx:00407F79 jne 00407FC6 se il seriale è errato salta all'indirizzo
00407FC6

xxxx:00407F7B push 000000C8
xxxx:00407F80 push 0041E468
xxxx:00407F85 push 00000029
xxxx:00407F87 push edi
xxxx:00407F88 Call dword ptr [00437638]//Message Box di Congratulazioni

I Jump da modificare sono questi:

xxxx:00407F1A JE ---> JMP (OPCODE:EB)
xxxx:00407F56 JNE --> NOP*2 (OPCODE:9090)
xxxx:00407F63 JE ---> JMP (OPCODE:EB)
xxxx:00407F79 JNE --> NOP*2 (OPCODE:9090)

Ora sapete anche come craccare il prog! Potete anche lasciare vuoto il campo del serial! Si registrerà in ogni caso!

--- GUANCY ---


Note Finali

Spero di essere stato chiaro in ogni mio punto! Al prossimo tutorial!


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.