CrackMe#2
di Cruehead | ||
Data |
by Kurdt Kobain |
|
15/07/2001 |
Published by Quequero | |
It's better to burn out than to fade away |
Dai che sono semplici...I primi :) |
Rock'n'roll High School |
.... |
|
.... |
Difficoltà |
(x)NewBies ( )Intermedio ( )Avanzato ( )Master |
Prosegue la saga sui crackme di cruehead...ora siamo al secondo
Introduzione |
Tools usati |
URL o FTP del programma |
Notizie sul programma |
Essay |
:004012B3 PUSH 11
:004012B5 PUSH 0040217E <- qui
:004012BA PUSH 000003E8
:004012BF PUSH DWORD PTR [EBP+08]
:004012C2 CALL User32!GetDlgItemTextA <- chiamata x l'acquisizione del seriale
Andando avanti vedremo di essere catapultati in Kernel32 ed in User ma questo non ci interessa, torniamo nel nostro programma (guardate sempre in basso nella barra verde)! Ed ecco cosa abbiamo:
:00401223 CMP EAX,00
:00401226 JZ 004011E6
:00401228 PUSH 0040217E
:0040122D CALL 00401365 <- chiamata per l'acquisizione del seriale
:00401232 PUSH 0040217E
:00401237 CALL 004013B8 <- chiamata del controllo
:0040123C ADD ESP,04
:0040123F TEST CL,CL <- test(ament)
:00401241 JZ 0040124A <- salta se cl=0 cioè se seriale esatto
:00401243 CALL 00401349 <- Errore
:00401248 JMP 004011E6
:0040124A CALL 00401334 <- ben fatto
:0040124F JMP 004011E6
questa è la parte centrale del controllo,vediamo due call poi un test cl,cl, un jz e poi di nuovo due call. Quindi con F8 entriamo nella prima call e osserviamo le istruzioni assembly:
:00401365 MOV BYTE PTR [00402118],00 <- sposta nel byte puntato il valore 0
:0040136C MOV ESI,DWORD PTR [ESP+04]
:00401370 PUSH ESI
:00401371 MOV AL,BYTE PTR [ESI] <- sposta in al primo char
:00401373 TEST AL,AL
:00401375 JZ 00000990 <- zero? Sei un coglione se non hai messo il seriale
:00401377 INC BYTE PTR [00402118] <- aumenta di 1 il valore del byte all'indirizzo 402118 (questo indirizzo è della memoria, non c'entra con gli indirizzi che trovate sulla sinistra delle istr. asm)
:0040137D CMP AL,41 <- da qui in poi...calcoli del cazzo
:0040137F JB 00401385
:00401381 CMP AL,5A
:00401383 JNB 00401388
:00401385 INC ESI
:00401386 JMP 00401371 <- ripete fino alla fine del seriale
:00401388 CALL 00000025
:0040138D INC ESI
:0040138E JMP 00401371 <- ripete fino alla fine del seriale
:00401390 POP ESI
:00401396 JMP 00401398 <- oh che bel salto! Mi sembra Fiona May
:00401398 RET
Questa è tutta l'acquisizione della pass. avrete notato che alla fine non troviamo il nostro seriale in nessun registro e allora voi vi chiederete "Ma cosa diavolo ha combinato sto programma se ha fatto tutto sto casino per niente?" Risp:Semplice,al programma non gliene frega niente dei char che avete inserito, invece va a guardare il n° di char inseriti, infatti alla fine di questa call,all'indirizzo di memoria 00402118 (d 00402118), vedrete proprio il numero di char che avete inserito. Bene...andiamo avanti con la seconda call!
:004013B8 XOR EDI,EDI
:004013BA XOR ECX,ECX
:004013BC MOV CL,BYTE PTR [00402118] <- sposta in cl numero di char
:004013C2 MOV ESI,DWORD PTR [ESP+04]
:004013C6 MOV EDI,00402150
:004013C9 REPZ CMPSB <- questo non so di preciso cosa faccia ma una cosa è certa:diminuisce il valore di cl di 1 mentre aumenta di 1 quello di esi ed edi, a Que dillo tu cosa fa!
:004013CA RET
Quindi usciti da questa call avremo in cl il numero dei char inseriti-1. Per avere il programma registrato cl deve essere = 0 (il salto deve avvenire, infatti la call di congratulazioni è la seconda) quindi il numero di char inseriti deve essere = 1 (1-1=0). Avete visto che scemenza, basta mettere nel box un qualsiasi char, uno solo però!
Kurdt Kobain
Note finali |
Non ho parole . . . . . . . . . . . . . . . . . . . . . . . . . . . quindi . . . . . . . . . . . . . . Come on people now, smile on your brother, everybody get together, try to love one another, right now . . . . . . . . . ahhhhhhhhhhhhhhhhhhhhhhhhhhhhhh. Ciave & buon crack a tutti!
Disclaimer |
Vorrei ricordare che il software non va comprato e ne rubato perchè lo trovate gratuitamente su questo sito.Non dovete registrare il vostro prodotto facendovi mandare il seriale dall'autore perchè altrimenti che crackme sarebbe?
Noi reversiamo al solo scopo informativo e di miglioramento del linguaggio Assembly.