Soluzione al CraCk Me 2 di NoRpiUs

Data

by kOrn[CsA]

 

27/02/03

UIC's Home Page

Published by Quequero


Quanto mi piace...

Grazie tante Korn :)

...riempire gli spazi vuoti :P

....

E-mail:  [email protected]
#crack-it, #cryptorev, #pmode, #folli, #graftal, #marilynmansonitalia, #mytux

....

Difficoltà

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

 

Inutile commentare ulteriormente il titolo, in quanto mi pare self-esplicativo.. a proposito.. se la formattazione non vi piace, compatitemi, sto usando il blocco note in assenza di un editor html. (non mi va di installare front page)


Soluzione al CraCk Me 2 di NoRpiUs
Written by kOrn[CsA]
 

Introduzione

Salve a tutti, questo è il primo tutorial che invio alla UIC e spero che vi piaccia. E' la soluzione ad un grazioso crackme made by NoRpiUs =)

Tools usati

I tools utilizzati sono:
Ollydbg (o qualsiasi altro debugger..)
Un minimo di conoscenze di asm ed un cervello (senza quello chiudete questa pagina.. se ne siete capaci)

URL o FTP del programma

http://www.norpius.tk/ sezione crackme

Notizie sul programma

Seconda versione del primo crackme in asm di NoRpiUs

Essay

Allora.. eccoci qua, finalmente, all'essay del tutorial; eseguiamo il crackme e notiamo subito due menu.. File che contiene il sottomenu Exit, ed il menu Help (quello che ci interessa) che contiene Registra e About.. andiamo d'intuito e clickiamo su Registra, dopodiché ci apparirà una strana dialog box... in essa si presentano due textbox nominate Nome e Seriale.. proviamo ad inserire come nome kOrn[CsA] e come seriale 666111666, inseriamo in olly un breakpoint sull'api GetWindowTextA... clickiamo ok e..... CAZZO! Appare un messagebox che ci avvisa che il seriale è errato... non abbiamo azzeccato l'api giusta :) proviamo con GetDlgItemTextA... uhuhuhuh olly brekka su 00401208! fiiiiiico anzi pheeeeeeco siamo dentro la routine per leggere e controllare il seriale! ma guardiamoci un po intorno:

lea   esi,dword ptr ds:[4030F8]    ;carica in esi il puntatore al nome
Inizio:
mov   al,byte ptr ds:[esi]    ;carica in al la lettera del nome puntata da esi
test  al,al    ;controlla se al è nullo
je    Fine    ;se sì esce dal ciclo
add   ecx,eax    ;somma eax ad ecx
sub   ecx,30    ;sottrae 30h ad ecx
xor   ecx,11D7     ;xora ecx con 11D7
add   ecx,20     ;aggiunge a ecx 20h
inc   esi     ;incrementa il puntatore al nome
jmp   Inizio     ;e torna all'inizio del ciclo
Fine:
call CrackMe2.004012A1    ;chiamata ad una seconda routine
cmp  eax,ebx    ;confronto tra seriale giusto e quello inserito
je   OK    ;se sono uguali allora congratulati
jmp  Lamah    ;altrimenti insulta

Come abbiamo visto analizzando il programma manipola il nostro nome con delle addizioni, sottrazioni e operazioni di xoring... qualcosa ci sfugge... ma cosa ci sarà all'indirizzo 004012A1!? andiamo a vedere :)

mov   eax,ecx    ;copia in eax il contenuto di ecx (seriale calcolato)
add  eax,1B    ;aggiunge ad eax il valore 1B
call  AltraCall    ;una ennessima call..
retn    ;uscita!

AltraCall:
mov  ecx,4E    ;ecx ora vale 4E
mul  ecx    ;moltiplica eax per 4E
xor  eax,4D2    ; xora eax con 4D2
sub  eax,17  ;toglie ad eax il valore 17 (hex)
RETN    ;ritorna

Rieccoci qua.. in queste altre parti di codice viene ulteriormente fatta qualche altra operazione col seriale calcolato come moltiplicazione, addizione e xoring.. al ritorno dalla prima call troveremo in ebx il seriale corretto che possiamo benissimo leggere in chiaro... adesso dopo aver analizzato il codice possiamo procedere con la creazione di un key generator (come indicato nel file rulez.txt lasciatoci dal nostro norpius)... scriviamo in vb (lo so, lo so..):

nome = InputBox("Inserisci il nome:")
For i = 1 To Len(nome)
  al = Asc(Mid(nome, i, 1))
  serial = serial + al
  serial = serial - &H30
  serial = serial Xor &H11D7
  serial = serial + &H20
Next i
serial = serial + &H1B
serial = serial * &H4E
serial = serial Xor &H4D2
serial = serial - &H17
MsgBox serial

Ecco qua la routine per calcolare un seriale corretto... abbiamo finito.

C ya,

                                                                                                                                                                  kOrn[CsA]

Note finali

Adesso però c'è un problema alquanto grosso... questo tutorial è un po troppo piccolo non trovate? eh.. che ci posso fare io.. il crackme era facile ;p

Questo tutorial è dedicato alla mia ragazza, che amo ed amerò sempre. Inoltre saluto: dionis` il linuxxaro d'eccellenza, Graftal che è un'amico sul quale posso sempre contare ;ppp , Ntoskrnl che è mitico (pure se non lo sento da un po), _ph0b0s_, N0bodY88, AndreaGeddon, ^Spider^, active85k, ReverendoFish, omissis e tutti quelli che mi sono dimenticato ;P e.... dulcis in fundo.. IL PAPERO! Ciao -=Quequero=- :)

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. sì sì.. ho qualche dubbio sull'utilità di questo disclaimer.. visto che ho reversato un CRACK ME :P

Noi reversiamo al solo scopo informativo e di miglioramento del linguaggio Assembly.