- Crack'in pillole nr.1 by Yan Orel
-
- 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 interruzione
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
Call
dword ptr [004956C8]
:0044C402
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".
- Cos� 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).