CreaCod 4.0

Data

by Tyzer

 

09/07/2001

UIC's Home Page

Published by Quequero

Ci tenevo a dire che odio la letteratura e la storia e le materie umanistiche perché secondo me sono del tutto inutili, stupide, false, noiose,...qualunque insulto vi venga in mente ! (da una vita mi volevo sfogare!!!)

Beh il programma era semplice, ma cmq l'approccio era forse un po' differente dal classico quindi il tutorial è il ben venuto...Ma non ci fermiamo alle cose semplici

Qui l' elogio alle materie tecniche e scientifiche che sono le migliori in assoluto...

....

E-mail: scrivete in ML
Tyzer,#crack-it

....

Difficoltà

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

 

Andremo a modificare il programma per farci svelare il codice di registrazione e poi registrarsi mediante quest ultimo.


CreaCod 4.0
Written by Tyzer

Introduzione

Credo che questo programma possa essere un buon punto di partenza per tutti gli aspiranti cracker !

Tools usati

W32Dasm

Hiew 6.01 o qualunque altro editor esadecimale

URL o FTP del programma

 Io l'ho trovato su un vecchio CD di shareware comunque il sito del produttore è www.compuart.it 

Notizie sul programma

Programma che serve per la creazione e controllo di codici fiscali, partite IVA ecc. ecc. La registrazione può essere fatta mediante un codice che verrà richiesto all' avvio del programma solo dopo aver stampato il modulo di registrazione.

Essay

Mi scuso anticipatamente se questo tutorial non è scritto bene, ma è il primo che faccio. Grazie.
 
La realizzazione del crack si divide in 3 parti:

1) Analisi del programma

2) Disassemblamento e individuazione del punto di modifica

3) Modifica codice

FASE 1

Dopo aver installato il programma, lo avviamo e veniamo avvisati che è uno shareware di 30 gg di durata, diamo OK e diamo una sbirciata al menù guida, qui troviamo una voce REGISTRAZIONE, clicchiamoci sopra e si presenta una pagina della guida del programma che illustra le modalità di registrazione. Eccole(testualmente dalla guida):

"Una volta stampato l'ordine o inviato lo stesso via e-mail, il programma resta in attesa del codice di attivazione, che riceverete dalla CompuArt via E-Mail, Fax o posta.
Mentre il programma si trova in questa fase di pre-registrazione chiede, ogni volta che viene usato, di inserire il codice di attivazione che gli permetterà di terminare la registrazione ed attivare tutte le funzioni del programma.
Con la registrazione viene generato, nella directory del programma, un file denominato CCOD40.RG contenente i dati della registrazione." 

FASE 2

Diamo un' occhiata al disassemblato per vedere se c'è qualcosa che ci interessa nelle String Data References, ad un certo punto trovo "Codice di registrazione:" allora andiamo a vedere la parte di codice che richiama la stringa:

Jump at Address:

|:0046D062(U)                                     <-- Salto incondizionato (JMP)

 :0046D07F    lea edx, dword ptr [ebp-04]

:0046D082    mov eax, dword ptr [00471F40]

:0046D087    call 004383A4

:0046D08C    lea eax, dword ptr [ebp-04]

:0046D08F    mov edx, 0046D204

:0046D094    call 0040375C

:0046D099    lea eax, dword ptr [ebp-04]

:0046D09C    push eax

:0046D09D    lea edx, dword ptr [ebp-08]

:0046D0A0    mov eax, dword ptr [00471F40]

:0046D0A5    call 00438434

:0046D0AA    mov edx, dword ptr [ebp-08]

:0046D0AD    pop eax

:0046D0AE    call 0040375C

:0046D0B3    mov edx, dword ptr [ebp-04]

:0046D0B6    mov eax, dword ptr [ebx+000001E0]

:0046D0BC    call 00413EE8

:0046D0C1    lea edx, dword ptr [ebp-04]

:0046D0C4    mov eax, dword ptr [00471F40]

:0046D0C9    call 00438554

:0046D0CE    mov edx, dword ptr [ebp-04]

:0046D0D1    mov eax, dword ptr [ebx+000001E4]

:0046D0D7    call 00413EE8

StringData Reference ->"Codice di registrazione: " <-- Qui la stringa viene richiamata

|

:0046D0DC    mov edx, 0046D210

:0046D0E1    lea eax, dword ptr [ebp-04]

:0046D0E4    call 00403674

:0046D0E9    lea edx, dword ptr [ebp-08]

:0046D0EC    mov eax, dword ptr [00471F40]

:0046D0F1    call 0043702C

:0046D0F6    mov edx, dword ptr [ebp-08]

:0046D0F9    lea eax, dword ptr [ebp-04]

:0046D0FC    call 0040375C

:0046D101    mov edx, dword ptr [ebp-04]

:0046D104    mov eax, dword ptr [ebx+000001E8]

:0046D10A    call 00413EE8

:0046D10F    jmp 0046D152

Allora, notiamo che a questa parte di codice si arriva mediante un salto incondizionato quindi andiamo un po' a vedere all' indirizzo 0046D062 sperando di trovare magari dei JZ o JNZ. Ecco il codice che si presenta a quel dato indirizzo:

Jump at Address:

|:0046D000(U)                                    <--Altro salto incondizionato (JMP)

|

:0046D012    mov eax, dword ptr [00471F40]

:0046D017    cmp byte ptr [eax+00000335], 00

:0046D01E    je 0046D111                            <--Questo salto fa saltare(scusate)la visualizzazione della registrazione (cioè non viene scritto "Registrato a:" ne "Codice di registrazione:"nel menù About)      

StringData Reference ->"Prodotto registrato a:"

|

:0046D024    mov edx, 0046D1E4

:0046D029    mov eax, dword ptr [ebx+000001D8]

:0046D02F    call 00413EE8

:0046D034    lea edx, dword ptr [ebp-04]

:0046D037    mov eax, dword ptr [00471F40]

:0046D03C    call 004381FC

:0046D041    cmp dword ptr [ebp-04], 00000000

:0046D045    je 0046D064                        <-- Salto condizionale che non necessita di modifiche a fini crackistici

:0046D047    lea edx, dword ptr [ebp-04]

:0046D04A    mov eax, dword ptr [00471F40]

:0046D04F    call 004381FC

:0046D054    mov edx, dword ptr [ebp-04]

:0046D057    mov eax, dword ptr [ebx+000001DC]

:0046D05D    call 00413EE8

:0046D062    jmp 0046D07F                       <-- Il salto che ci porta alla stringa "Codice di registrazione"

Abbiamo trovato un altro salto incondizionato allora risaliamo ulteriormente nel codice per capire cosa succede e di conseguenza come intervenire :

Jump at Address:

|:0046CF6E(C)

|

:0046CFDD    call 00413EE8

:0046CFE2    mov eax, dword ptr [00471F40]

:0046CFE7    cmp byte ptr [eax+00000335], 00

:0046CFEE    je 0046D002

StringData Reference ->"Version 4.0 Pro"

|

:0046CFF0    mov edx, 0046D1AC

:0046CFF5    mov eax, dword ptr [ebx+000001B8]

:0046CFFB    call 00413EE8

:0046D000    jmp 0046D012

Jump at Address:

|:0046CFEE(C)

|

StringData Reference ->"Version 4.0 Shareware"

|

:0046D002    mov edx, 0046D1C4

:0046D007    mov eax, dword ptr [ebx+000001B8]

:0046D00D    call 00413EE8

Allora riassumendo abbiamo visto che il programma richiama le stringhe di testo "Prodotto registrato a:" e poi "Codice di registrazione:" quindi ho pensato che una volta registrato il programma visualizzi il codice di registrazione. Quindi perchè non farlo visualizzare prima della registrazione in modo da avere bello pronto il serial ? Dopo aver trovato il punto dove la stringa è richiamata sono risalito attraverso qualche salto al punto in cui viene richiamata la stringa "Prodotto registrato a:" e notiamo che sopra ad essa si trova un JE 0046D111 quindi per far visualizzare tali stringhe bisogna invertire questo salto in JNE 0046D111 ed il gioco è fatto. L'unica cosa che non vi so dire è perchè il programma arriva a questo punto di codice quando l' unico salto che porta lì è quello all' indirizzo 0046D000 dove poco prima viene richiamata la stringa Version 4.0 Pro cioè la stringa che indica che il programma è registrato e quindi non capisco come ci si arrivi prima di registrarlo comunque...(ho avuto poco tempo per fare sto tutorial se così si può chiamare, magari prossimamente...). 

FASE 3 

Ora viene la parte più semplice di questo stupidissimissimo crack cioè come si cambia il codice dell' eseguibile per fare il crack. Disassemblate il file CCOD40.exe con il W32DASM e una volta giunti sull' istruzione da modificare (il salto condizionale a:0046D01E) segnatevi il suo Offset (visualizzato nella parte inferiore del W32DASM dove c'è scritto @Offset).Aprite il file CCOD40.exe con un editor esadecimale (io uso Hiew, ma qualunque altro va bene). Raggiungete l' offset che vi siete scritto (con Hiew una volta aperto il file schiacciate due volte invio per andare in modalità decode poi F5 e scrivete l' offset e premete invio). Notate che l' istruzione è composta da 6 bytes, ora cambieremo il salto quindi entrate in modalità Edit (con Hiew F3) e scrivete al posto del 74 un 75 (JNE) poi noppate (opcode 90) i restanti 5 byte. Ora potete salvare il file (per Hiew F9) ed uscire (con Hiew F10). Avviate il programma e andate nel menù File riempite il modulo d' ordine con i dati che volete e fate finta di stamparlo. Poi uscite dal programma e rientrateci, chiudete la finestra che chiede il codice di registrazione e andate nel menù About segnatevi il serial e uscite di nuovo. Rientrando poi di nuovo nel programma inserite il codice e sarete registrati (Tutto sto' casino è necessario perchè il codice di registrazione viene cambiato dopo che avete stampato il modulo d'ordine e quindi vi ritrovereste con il numero sbagliato mentre uscendo rientrando segnando il codice e rientrando per inserirlo vi registrerete).  

Questo programma si sarebbe forse potuto crackare in modo più semplice o più veloce o più intelligente, ma io l'ho fatto così perchè è la prima soluzione che mi è venuta in mente vedendo il disassemblato e infatti l' ho crackato in 5 min 42 s (cronometrati sul serio !).

Ciao a tutti

 
 

Note finali

Ringrazio tutto il chan #crack-it per i suoi numerosi e sempre utili consigli e spiegazioni e tutta la UIC perchè il suo lavoro è veramente ottimo ed aiuta tutti a migliorarsi nella propria abilità di cracker. Le domande ai miei quesiti mi sono state date da Quequero, AndreGeddon, TheMR, -albe- (grazie per la guida all' asm!)...e poi chissà quante altre persone che non ricordo grazie mille a tutti !!!!

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.