Corso 9
Newbie crack


1/7/2000

by wonder

 

 

UIC's Home Page

Published by Quequero


Grazie per la soluzione......Ma almeno lo potevi reversare o no? Mi fai il QuePad e non mi fai WinRar.....hihiihi

 
UIC's form
 
E-mail: wonder@zxmail.com
 
UIC's form

Difficoltà

(x)NewBies ()Intermedio ( )Avanzato ( )Master

 

Salve a tutti. Questo tute rappresenta una soluzione per il Corso 9 della UIC. Scusatemi tanto ma l'ho scritto di corsa.


Corso 9
Newbie Crack
Written by wonder

Introduzione

Il programma sotto valutazione e' il WinRar version 2.5 beta 3. Questo programma usa una protezione abbastanza efficace. Infatti, se volete imparare qualcosa vi suggerisco di studiare la protezione che questo programma usa. Vi dara' del filo da torcere ma imparerete molto:)

Tools usati

SoftIce
Hex WorkShop solo se volete modificare il programma permanentemente.

URL o FTP del programma

Il sito di Quequero (quequero.org)

Notizie sul programma 

Niente di particolare

Essay


Ebbene in questo tute craccheremo il programma usando un approccio Live! Cio' significa che tutto cio' che faremo sara' fatto mentre il programma e' in memoria eseguendo il suo code. Cracchare questo programma e' molto semplice. Cio' non vuol dire che la protezione non sia buona. Anzi tutt'altro. Infatti, mi vorrei congratulare con i/il programmatori/e che hanno scritto questa protezione. Veramenti bravi! Sfortunamente in questo tute non vi mostrero' la vera protezione del programma. Il tempo scarseggia. :(

Va bene.... si parte....
Lanciate il programma. Cliccate su Options e poi cliccate su Registration. Come vedete ci sono due linee dove dovete mettere il nome e il seriale

Ok! E' giunta l'ora di lanciare SoftIce. La prima cosa da fare e' mettere un bel bpx getDlgItemTextA. Fatto? Bravi! Uscite dal SoftIce e mette un Nome ed un KeyCode. Dopodiche' cliccate sul bottone OK. A questo punto SoftIce dovrebbe presentarsi SoftIce. Ctrl+D e SoftIce si presenta di nuovo. Questo e' il punto in qui ci troviamo:
:00409D23 Call 0044D419                                                              Primo breakpoint. Questa e' la chiamata per getDlgItemTextA
:00409D28 lea eax, dword ptr [ebp+FFFFFE98]                      
:00409D2E push eax               
:00409D2F lea edx, dword ptr [ebp+FFFFFE98]               
:00409D35 push edx                  
:00409D36 Call 0044D31D                  
:00409D3B push 00000046                  
:00409D3D lea ecx, dword ptr [ebp+FFFFFE50]                  
:00409D43 push ecx                  
:00409D44 push 00000066                  
:00409D46 mov eax, dword ptr [ebp+08]                  
:00409D49 push eax                  
:00409D4A Call 0044D419                                                            
Secondo breakpoint. Questa e' la chiamata per getDlgItemTextA            


Dopo il second breakpoint dovrete schiacciare F12 per uscire dalla funzione e ritornare nel code del WinRar. Schiacciate F10 sino a quando non arrivate qua:
:00409DA9 call 004272C0                             Questa e' una chiamta molto importante.
:00409DAE add esp, 00000008                 
Lo stack viene aggiustato
:00409DB1 test eax, eax                  
     Questo test e' usato per vedere se la registrazione e' valida o meno
:00409DB3 jne 00409DE1                  
    Se EAX e' zero non siamo registrati. Cambiare questa istruzione in un jmp non serve a niente.


Anche se cambiate l'ultima istruzione in un jmp o se cambiate EAX = 1, non vi servira' a niente. Provate! Vedete non siete ancora registrati. Comunque noterete anche che il programma vi crea una nuova file. La nuova file e' Rar.ini e vedrete che ha conservato le vostre informazioni per la registrazione.

Per poter cracckare questo programma dobbiamo andare a vedere che cosa succede dentro la funzione 004272C0 poiche e' quest'ultima a ritornare il valore 0 o 1 nel registro EAX. Quindi entrate dentro ed andiamo a vedere l'ultima operazione che viene eseguita usando EAX. Eccoci qua:
:0042754C E84FC10100 call 004436A0                                         Un'altra funzione. Non ci interessa in questo caso.                         
:00427551 83C40C add esp, 0000000C                                         
Lo stack viene aggiustato
:00427554 85C0 test eax, eax                                                           
Controlliamo EAX
:00427556 0F94C0 sete al                                                                                                                              
:00427559 83E001 and eax, 00000001                                            
:0042755C A37C154500 mov dword ptr [0045157C], eax            
Questa mi appare un po' sospetta. Controlliamola.           


Vede l' ultimo passo. Sta' copiando il valore di EAX in una variabile. Ed e' per questo che cambiare il jump di priva non serve a niente. E' questa variable che tiene conto se sei registrato/a o meno. Per esserne sicuri togliamo tutti i breakpoint dal SoftIce (bc *) e poi mettiamo un altro breakpoint. Stavolta pero' lo mettiamo contro la variable [0045157C]. Allora questo e' la syntax... bpm 0045157C. Torniamo al programma WinRar e chiudiamolo. Vedrete a questo punto che SoftIce appare un paio di volte. Allora siete convinti ora.... Ancora un altro test. Ricarichiamo il programma in memoria... Tada'!! E gia' ancora una volta il programma manipola quella variable [0045157C]. Questa e' la parte importante del codice:

:0042755C mov dword ptr [0045157C], eax             Ancora una volta la memoria [0045157C] viene usata come flag             
:00427561 mov edx, dword ptr [0045155C]                  


Ormai e' fatta. Abbiamo capito tutto. La memoria [0045157C] non e' altro che una flag che dice al programma se e' registrato o meno. Infatti se cambiate il valore in memoria di [0045157C] e mette 1 come valore vedrete che siete belli e registrati. :) A questo punto se volete potete pure usate l' hex editor e cambiare i byte di questa operazione. Mi raccomando mantenete la stessa lunghezza dell'operazione. Cambiate troppo e il programma crash.


                                                                                                                 Feel the code, Luke

Note finali

Vorrei ringraziare Que, Syscalo e soprattutto AnrdreaGeddon che durante questa lezione mi ha aiutato molto nel scoprire errori nei miei calcoli del KeyCode. Grazie per la vostra pazienza e per il vostro aiuto. Avrei voluto scrivere il tute sul keygen soprattutto dopo tutte quelle nottate sprecate, ma il tempo mi scappa via. :(. Sara' per la prossima volta. :)

Disclaimer

Copiato da syscalo: "Non azzardatevi a copiare i tutorial della UIC e a spacciarli per vostri! Sarete puniti! .....
Vorrei inoltre 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   Forum   Lezioni
Tools   Tutorial
UIC