Copy Link
Add to Bookmark
Report

Crack

DrWatson's profile picture
Published in 
guide hacker
 · 12 May 2018

Target : UltraEdit 5.21
Protezione : Limite di tempo (45 giorni) con codice di sblocco.
Requisiti : SoftIce & un HexEditor

Lo schema di protezione della verifica del codice e' molto difficile. Proviamo un approccio diverso :
Modifichiamo il programma in modo tale da fargli credere di essere sempre entro i 45 giorni di prova.
Quindi, per vedere come il programma reagisce dopo il periodo di prova, settiamo la data 45 giorni avanti e lanciamo il programma.
Il programma e' spirato. Ci chiede un codice. Premiano Cancel.
Una Message Box appare. Buon indizio.


----------------------------------------------------------------------------------------
Breve digressione: Cosa e' una MessageBox ?

Le Message Boxes sono delle generiche 'finestre' generate da Windows e hanno la funzione di mostrare a video un messaggio, un avviso, un testo o altro. E sono proprio queste quelle che la maggior parte dei programmi (non tutti) usa per avvisare l'utente di un errore o altro (per es.: codice errato!).
Windows usa una funzione ben precisa per generare queste finestre : MessageBox.
Per cui se noi riusciamo a interrompere il programma mentre sta per generare la finestra che ci avvisa che il programma e' espirato, possiamo controllare il corso dell'esecuzione del programma e controllare (basta intuire, non e' indispensabile capire agli inizi) quali scelte il programma ha effettuato prima di generare la finestra di codice errato.
Quindi una volta individuato il punto esatto del programma in cui viene fatta la scelta se il programma e' espirato o no, possiamo cambiare (basta invertirlo) il risultato di questa scelta e potremo cosi' usare il programma quante volte vorremo.
Quindi tornando a UltraEdit....
----------------------------------------------------------------------------------------


Tiriamo su Softice, e settiamo un bel : BPX MessageBoxA.
_____In questo modo stiamo dicendo al debugger (SoftIce) di generare una interruzzione
quando incontra la funzione MessageBox.
Rilanciamo il programma.
Premiamo Cancel alla richiesta del codice di sblocco.
Softice interviene , quindi premiamo F12 per far eseguire la funzione.
La Message box appare. Premiano Ok. Siamo ritornati cosi all'interno di SoftIce.
Ora se guardiamo al codice, vediamo (24 instruzioni piu' su di dove ci troviamo adesso):

 
:0044C3A5 83F82D cmp eax, 0000002D -- 2d e' 45 in esadecimale :il limite di giorni
:0044C3A8 59 pop ecx
:0044C3A9 7F0C jg 0044C3B7
:0044C3AB 399F3C010000 cmp dword ptr [edi+0000013C], ebx
:0044C3B1 0F8576FFFFFF jne 0044C32D -- qui salta alla noiosa box iniziale

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0044C3A9(C)
|
:0044C3B7 E80D97FBFF call 00405AC9 -- qui richiama la routine della richiesta del codice
:0044C3BC 391D20B94B00 cmp dword ptr [004BB920], ebx
:0044C3C2 758A jne 0044C34E -- qui salta dritto nel programma
:0044C3C4 8D4D10 lea ecx, dword ptr [ebp+10]
:0044C3C7 E81E230200 call 0046E6EA
:0044C3CC 8D4D14 lea ecx, dword ptr [ebp+14]
:0044C3CF C645FC01 mov [ebp-04], 01
:0044C3D3 E812230200 call 0046E6EA

* Possible Reference to String Resource ID=00068: "UltraEdit 45 Day Evaluation time expired!!!!"
|
:0044C3D8 6A44 push 00000044
:0044C3DA 8D4D10 lea ecx, dword ptr [ebp+10]
:0044C3DD C645FC02 mov [ebp-04], 02
:0044C3E1 E8382A0200 call 0046EE1E

* Possible Reference to String Resource ID=00069: "To continue to use UltraEdit you must send the registration "
|
:0044C3E6 6A45 push 00000045
:0044C3E8 8D4D14 lea ecx, dword ptr [ebp+14]
:0044C3EB E82E2A0200 call 0046EE1E
:0044C3F0 6830200000 push 00002030
:0044C3F5 FF7510 push [ebp+10]
:0044C3F8 FF7514 push [ebp+14]
:0044C3FB 53 push ebx

* Reference To: USER32.MessageBoxA, Ord:0195h
|
:0044C3FC FF15C8564900 Call dword ptr [004956C8]
:0044C402 399F3C010000 cmp dword ptr [edi+0000013C], ebx -- dopo F12 partiamo da qui.

Analizzando il codice e' chiaro che basta cambiare all'EIP 44c3a9 : "jg 0044C3B7" in "jmp 0044C34E".

Cosi con un hex editor, eseguiremo la ricerca di : 83F82D597F0C
e sostituiremo quei valori con: 83F82D59EBA3.

Per completare il lavoro, possiamo cambiare con l' hex editor la parola UNREGISTERED con REGISTERED o altro (cerca e sostituisci, facendo attenzione a lasciare uno spazio tra le singole lettere).

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT