UIC Lezione 1
Crackare il Prog


01-09-1999

by "Unlock"

 

 

UIC's Home Page

Published by Quequero



Buono anche il lavoro di Unlock, il tutorial non presenta errori, è quindi esatto solo che è un po' vago, complimenti anche ad Unlock

 
UIC's form
By Unlock
UIC's form

Difficoltà

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

 

Soluzione del 1° corso crecando d'imbrogliare il programma facendogli credere che i dati inseriti siano corretti :))))


UIC Lezione 1
Crackare il Prog

Written by Unlock

Introduzione


Partiamo con questa prima lezione di UIC sperando che chi è alle prime armi non si scoraggi :))))))

 

Tools usati

SoftIce ver 4.00 (le versione non è importante)

 

URL o FTP del programma

http://quequero.members.easyspace.com/progetti.html

 

Notizie sul programma

È la prima lezione della UIC

Essay


1) Avviamo il programma uno.exe, ci chiederà due info per poterlo registrare
2) Inseriamo quello che vogliamo nelle due caselle
3) Clicchiamo il tasto "REGISTER", il programma da un messaggio di errata registrazione

Sappiamo che Windows legge le informazioni da noi inserite nelle caselle con la funzione GETWINDOWTEXTA. Premiamo Ctrl+D e saremo in SoftICE, inseriamo un breakpoint  proprio alla chiamata della funzione  GETWINDOWTEXTA scrivendo bpx    GETWINDOWTEXTA e premendo enter, ora ripremiamo Ctrl+D per ritornare a windows.
Ripetiamo i punti da 1 a 3. Al momento dell'esecuzione del punto 3 il breakpoint viene eseguito, premiamo il tasto F12 (che serve a ritornare all' istruzione successiva alla chiamata della funzione GETWINDOWTEXTA) e ci troveremo il seguente codice

 016F : 00401205   CALL USER32!GETWINDOWTEXTA
          : 0040120A   MOV EAX,00402165
          : 0040120F   PUSH 08
          : 00401211   PUSH  00402169
          : 00401216   PUSH DWORD PTR [00402088]
          : 0040121C   CALL USER32!GETWINDOWTEXTA
          : 00401221   MOV EBX, 00402169
          : 00401226   MOV EDX, EAX
          : 00401228   XOR ECX, ECX
 
In questo punto il programma legge le informazioni e le memorizza in aree di memoria. Proseguiamo nel DEBUG del programma con il tasto F 10 e troveremo il seguente codice:

  016F : 0040122A   MOV AL, [ECX+00402165]
            : 00401230   ADD AL, 12
           : 00401232   XOR AL, CL
           : 00401234   ADD AL, 15
           : 00401236   ADD AL, 02
           : 00401238   MOV EBX, 00402169
           : 0040123D  MOV AH, [ECX+EBX]
           : 00401240   CMP  AL, AH
           : 00401242   JNZ 00401311 *************
           : 00401248   INC ECX
           : 00401249   INC EAX
           : 0040124A   CMP ECX, 03
           : 0040124D   JNZ 0040122A

 In questo codice vengono prelevati i caratteri da noi inseriti, e memorizzati dal programma  nell'area di memoria 00402165 (corrispondente alla prima casella bianca) e confrontati con quelli memorizzati nell'area di memoria 00402169 (corrispondente alla seconda casella bianca). Teoricamente da questo confronto si potrebbe trovare la chiave esatta e quindi  inserirla senza modificare il codice del programma; in realtà il calcolo della chiave genera  dei simboli strani quindi è più semplice modificare il codice del programma.
 Il salto condizionato da modificare è quello nella locazione di memoria 00401242   JNZ    00401311, per fare questo in SoftICE scrivere: A [spazio] 016F: 00401242 e premere enter.
In questo modo SoftICE ci permette di cambiare il codice e quindi possiamo trasformare  JNZ  in JZ, si fa questo perchè l' istruzione CMP AL,AH setta un flag a 1 se il confronto non è corretto, che è il nostro caso poichè abbiamo inserito una "fesseria"! Questa piccola  routine  viene eseguita per tre volte dopo di che si ha un altro controllo, questo lo  possiamo notare  premendo sempre il tasto F 10 (dopo avere modificato il salto).

  016F : 004012A9   MOV AL, [ECX+00402165]
            : 004012AF   XOR          AL, 16
           : 004012B1   ADD AL, 45
           : 004012B3   ADD AL, CL
           : 004012B5   XOR AL, CL
           : 004012B7   MOV BL, [ECX+00402169]
           : 004012BD  CMP AL,BL]
           : 004012BF   JNZ 00401311 *************
           : 004012C1   INC ECX
           : 004012C2   CMP ECX, 08
           : 004012C5   JNZ 004012A9

Questo codice ripete il controllo di un altro pezzo di chiave di registrazione per 5 volte  quindi c'è il solito confronto e il solito salto JNZ che andrà modificato come il precedente.

############ pensate d'avere finito ?????? Non è così !!!!!!!!!!#############

 Dopo avere modificato anche questo salto proseguite di nuovo con il tasto F10 e apparirà il    seguente codice:
 
 016F : 00401308   CALL 00401351
          : 0040130D   CMP AL, 01
          : 0040130F   JZ 00401338............... ecc. ecc.

Se, quando arrivate sull' istruzione CALL, premete il tasto F 10 NON FATELO!!!, il    programma vi dirà che la     chiave da voi inserita è errata; quindi qui c'è un ulteriore    controllo della chiave di reg. bisogna entrare nella routine e vedere cosa controlla; per fare ciò si preme il tasto F8. A questo punto si visualizzerà il seguente codice:

 016F : 00401351   MOV EBX,00402169
          : 00401356   MOV EDX, EAX
          : 00401358   XOR ECX, ECX
          : 0040135A   MOV AL, [ECX+00402165]
          : 00401360   ADD AL, 12
          : 00401362   XOR AL, CL
          : 00401364   ADD AL, 15
          : 00401366   ADD AL, 02
          : 00401368   MOV AH, [ECX+00402169]
          : 0040136E   CMP AL, AH
          : 00401370   JNZ 00401311 *************
          : 00401372   INC ECX
          : 00401373   INC EAX
          : 00401374   CMP ECX, 03
          : 00401377   JNZ 0040135A
          : 00401379   MOV AL, [ECX+00402165
          : 0040137F   XOR AL, 16
          : 00401381   ADD AL, 44
          : 00401383   ADD AL, CL
          : 00401385   XOR AL, CL
          : 00401387   MOV AH, [ECX+ 00402169]
          : 0040138D  CMP AL, AH
          : 0040138F   JNZ 0040139B *************
          : 00401391   INC ECX
          : 00401392   CMP ECX, 8
          : 00401395   JNZ 00401379
          : 00401397   MOV AL, 01
          : 00401399   JMP 0040139F
          : 0040139B   MOV AL, 00
          : 0040139D   JMP      0040139F

Questo codice ricontrolla quello che noi abbiamo inserito nelle caselle di registrazione e, se il controllo è corretto, inserisce in AL il numero 01 se no mette 00. Anche qui noi dobbiamo fare credere al programma che i dati inseriti siano corretti, quindi dovremo  modificare i salti contrassegnati dagli asterischi da JNZ a JZ con lo stesso metodo usato in    precedenza. Scrivere in SoftICE A [SPAZIO] 016F : 00401370 e premere enter   e   016F : 0040138F  e premere enter.

Premere F5 in SoftICE per fare ripartire il programma et voilà!

Spero di essere stato abbastanza chiaro :)))) Unlock

Note finali 

Un rigraziamento a tutti gli amici di crack-it
 

Disclaimer

Vorrei ricordare che l'arte del reversing non è fatta per imbrogliere le case software e non pagare i loro programmi anche perchè i programmatori devono anche pur mangiare no :).

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

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

UIC