venerdì 29 aprile 2011

Risolvere i primi crackme, facile e difficile allo stesso tempo...


Cosa sono i CrackMe 
Il CrackMe, in forma abbreviata CM, e' la palestra del cracker...E' nella maggior parte dei casi un programmino innocente che il cracker deve crackare  per farsi le ossa...Molto spesso si tratta di far in modo che il programma accetti qualunque tipo di password (la patch) oppure l'obbiettivo e' keygennarlo, cioe' trovare l'algoritmo di creazione di caratteri in modo che il programma accetti qualunque password fatta dal nostro keygen.
Altre volte e' richiesto di eliminare i NAG, che sono come delle MessageBox rompicoglioni, che appaiono e scompaiono, oppure non possono essere chiuse per X secondi...Ci sono inoltre altri obbiettivi, che non vi sto a elencare...

Il primo CM, il piu' facile, ma il piu' difficile
Ho aperto questo post, principalmente perche' ho visto che molta gente non riesce a risolvere i primi CrackMe, che sono a dir poco FACILISSIMI, ma allo stesso tempo difficili, per chi e' alle prime armi.
Nella precendente guida, quando introducevo il reversing, avevo gia' detto che i primi crackme sarebbero stati difficili all'inizio, ma avevo anche specificato di non scoraggiarsi.
Per questo, in questo post vi daro' un esempio di come crackare un semplice CrackMe: QUESTO...
Questo CrackMe che potete vedere qua a fianco, e' stato creato da TripleTordo e' ha come obbiettivo la creazione di un keygen, ma noi oggi tenteremo prima di tutto di patcharlo.

Adesso diamo un occhiata al codice assembly di questo CM...
Apritelo con il vostro debugger (OllyDGB consigliato) e analizzatene il codice.
Notiamo subito varie scritte nella colonna di destra come per esempio:

"name must be at least 4 chars" oppure
"where is the serial, MrCracker ?".


E questi ovviamente sono i messaggi di errore, che si aprono nel caso facciamo una determinata cosa...Non vi ricorda una specie di ciclo If?? (se il nome e' meno di 4 caratteri allora apri il messaggio di errore) Ancora no?
Pero' se proviamo a togliere quell'if (che in quel caso e' un JUMP) notiamo che in qualunque caso apparira' il messaggio di errore...perche'?
Immaginate in un linguaggio ad alto livello un codice del genere:
(in questo caso AutoIT che e' conosciuto e semplice)

if @error then
msgbox (0, "Errore", "si e' verificato un errore")
EndIf


Se levate l'if rimane solo la msgbox...Capito? Ovviamente visto che il Jump non e' un ciclo e quindi non vuole un codice di chiusura, se leviamo l'if e' come se levassimo anche l'EndIf...

Scorriamo quindi piu' sotto e vediamo ancora nella terza colonna di Olly scritto:

"Good Job, Now write a keygen  ::  REgistred to: "

Questo e' il messaggio di registrazione avvenuta.
E se qui facessimo la stessa cosa? uscirebbe sempre quel messaggio e lo avremmo patchato.
E infatti se provate a sostituire il Jump subito sopra avrete patchato il CM.
Facile no? Bhe' se avete capito questo capirete anche tutti gli altri di livello facile che si possono reperire sul web.
Spero abbiate capito tutti, nel caso ci fosse qualcosa che non va chiedete pure...

Alla prossima, BlackHack

2 commenti:

  1. Ciao, potresti aggiornare il CrackMe di megaupload che è stato chiuso? e magari metterlo su mediafire? grazie :)

    RispondiElimina

Ti potrebbero anche interessare

Related Posts Plugin for WordPress, Blogger...