Vai al contenuto

[CrackME #1] Ice9 [1/10][Solved by Wentstorm]


Messaggi raccomandati

Vi propongo un crackME a me molto caro XD, il primo in assoluto che crakkai ... Ice9 !!

 

E' veramente facile, quindi le richieste saranno 3

 

+ Una Crack che permetta di fare accettare qualsiasi seriale

+ Un Self-Keygen (il programma restituisce una messagebox con il seriale corretto)

+ Un Keygen

 

Difficoltà : [1/10]

 

Tempo di soluzione : 5 minuti per richiesta

 

A voi : http://www.mediafire.com/?sy39p4qeqhprbqh

Modificato da BeTmAsTeR
Link al commento
Condividi su altri siti

da dove inizio?

allora il self keygen pusha 403198... non ci arrivo..

EDIT: trovato il post di predator, keygen in arrivo?

EDIT2: 00401153 e l' offset dove inizia tutto, e manda a

 

 

00401180 > /83C3 01 ADD EBX,1

00401183 . |3BD3 CMP EDX,EBX

00401185 . |74 15 JE SHORT Ice9.0040119C

00401187 . |8A07 MOV AL,BYTE PTR [EDI]

00401189 . |3C 5A CMP AL,5A

0040118B . |7E 05 JLE SHORT Ice9.00401192

0040118D > |03C8 ADD ECX,EAX

0040118F . |47 INC EDI ; Ice9.004030B7

00401190 .^\EB EE JMP SHORT Ice9.00401180

 

niente credo sia errato help sigh

Modificato da Melo_Wii
Link al commento
Condividi su altri siti

Guarda, questa è la soluzione commentata :

 

00401153 $ 55 PUSH EBP

00401154 . 8BEC MOV EBP,ESP

00401156 . 68 B4304000 PUSH Ice9.004030B4 ; /String = "Zyrel"

0040115B . E8 42010000 CALL <JMP.&kernel32.lstrlenA> ; \lstrlenA

00401160 . BA 6A314000 MOV EDX,Ice9.0040316A

00401165 . 8902 MOV DWORD PTR DS:[EDX],EAX ; infila nell indirizzo puntato da EDX la lunghezza del nick

00401167 . BF B4304000 MOV EDI,Ice9.004030B4 ; muove il nick in EDI

0040116C . BE 19314000 MOV ESI,Ice9.00403119 ; ASCII "370512621"

00401171 . 33C0 XOR EAX,EAX ; azzera EAX

00401173 . 33DB XOR EBX,EBX ; azzera EBX

00401175 . 33C9 XOR ECX,ECX ; azzera ECX

00401177 . 33D2 XOR EDX,EDX ; azzera EDX

00401179 . BA 6A314000 MOV EDX,Ice9.0040316A

0040117E . 8B12 MOV EDX,DWORD PTR DS:[EDX] ; muove la lunghezza del nick in EDX

00401180 > 83C3 01 ADD EBX,1 ; parte un ciclo for con il counter inizializzato ad 1

00401183 . 3BD3 CMP EDX,EBX ; compare la len con EBX (0)

00401185 . 74 15 JE SHORT Ice9.0040119C ; se è uguale salta

00401187 . 8A07 MOV AL,BYTE PTR DS:[EDI] ; Prende il primo carattere del nick e lo mette in AL

00401189 . 3C 5A CMP AL,5A ; controlla se il carattere è <= di 90

0040118B . 7E 05 JLE SHORT Ice9.00401192 ; se si salta al prossimo if

0040118D > 03C8 ADD ECX,EAX ; somma ECX con EAX (valore ASCII del char)

0040118F . 47 INC EDI ; incrementa EDI (variabile counter dell' iterazione)

00401190 .^ EB EE JMP SHORT Ice9.00401180 ; cicla di nuovo

00401192 > 3C 41 CMP AL,41 ; controlla che il char sia maggiore o uguale a 65

00401194 . 7D 02 JGE SHORT Ice9.00401198 ; se si (quindi se il carattere è MAIUSCOLO) salta

00401196 . EB 02 JMP SHORT Ice9.0040119A ; se no salta a 00401198

00401198 > 04 2C ADD AL,2C ; somma 44 al valore del char tenuto in EAX

0040119A >^ EB F1 JMP SHORT Ice9.0040118D ; somma EAX con ECX (004018D)

0040119C > 81C1 9A020000 ADD ECX,29A ; somma_char = somma_char + 666

004011A2 . 69C9 39300000 IMUL ECX,ECX,3039 ; somma_char = somma_char * 12345

004011A8 . 83E9 17 SUB ECX,17 ; somma_char = somma_char - 23

004011AB . 6BC9 09 IMUL ECX,ECX,9 ; somma_char = somma_char * 9

004011AE . 33DB XOR EBX,EBX ; azzera EBX

004011B0 . 8BC1 MOV EAX,ECX ; muove il seriale corretto (non completo) in EAX

004011B2 . B9 0A000000 MOV ECX,0A

004011B7 > 33D2 XOR EDX,EDX ; azzera EDX (che conteneva la len del nick)

004011B9 . F7F1 DIV ECX ; divide ECX

004011BB . 80C2 30 ADD DL,30 ; somma 30 a DL

004011BE . 881433 MOV BYTE PTR DS:[EBX+ESI],DL ; mette DL nell' indirizzo puntato

004011C1 . 83C3 01 ADD EBX,1 ; EBX + 1

004011C4 . 83F8 00 CMP EAX,0 ; compara il nostro seriale con 0

004011C7 . 74 02 JE SHORT Ice9.004011CB ; se lo è salta a 004011CB

004011C9 .^ EB EC JMP SHORT Ice9.004011B7 ; se no torna allo XOR ad 004011B7

004011CB > BF C8304000 MOV EDI,Ice9.004030C8 ; ASCII "126215073el"

004011D0 > 8A4433 FF MOV AL,BYTE PTR DS:[EBX+ESI-1] ; mette il char contenuto nell' indirizzo puntato in AL

004011D4 . 8807 MOV BYTE PTR DS:[EDI],AL ; AL và nel indirizzo puntato da EDI

004011D6 . 47 INC EDI ; aumenta EDI

004011D7 . 4B DEC EBX ; decrementa EBX

004011D8 . 83FB 00 CMP EBX,0 ; compara EBX con 0

004011DB .^ 75 F3 JNZ SHORT Ice9.004011D0 ; se non è = a = cicla di nuovo da 004011D0

004011DD . C607 00 MOV BYTE PTR DS:[EDI],0

004011E0 . 8D3D B4304000 LEA EDI,DWORD PTR DS:[4030B4]

004011E6 . 68 B7304000 PUSH Ice9.004030B7 ; prende le ultime due lettere del nick

004011EB . 68 C8304000 PUSH Ice9.004030C8 ; pusha la prima parte del serial

004011F0 . E8 BB000000 CALL Ice9.004012B0 ; concatena le due stringhe (prima parte numerica e ultimi 2 char)

004011F5 68 C8304000 PUSH Ice9.004030C8 ; ecco qui il nostro seriale!! :D

 

Questo invece è il source del mio keygen :

 

#include <iostream>

#include <string.h>

 

using namespace std;

 

int main ()

{

char name[100];

int stringdec=0;

int lun=0;

 

 

 

cout<<"Ice9 crackME keygen, created by BeTmAsTeR\n";

cout<<"Inserisci l' username\n";

 

gets(name); // get the username

lun = strlen(name); // get username lenght

 

if (lun <4 || lun>10)

{

cout<<"Inserisci un username valido, 4 < caratteri < 10 \n";

return 0;

}

 

for (int i=0;i<(lun-1);i++)

stringdec+=int(name);

cout<<endl;

 

stringdec+=666; // Operazioni per la generazione

stringdec=stringdec*12345;

stringdec-=23;

stringdec=stringdec*9;

 

cout<<"Il serial e' : ";

cout<<stringdec; // Stampa la stringa generata

for (int i=3;i<lun;i++) // Aggiunge le lettere dopo le prima 3

cout<<name;

 

cout<<endl<<endl;

system("PAUSE");

 

return 0;

}

 

 

Guarda le operazioni per la generazione.

 

Per il seriale devi:

1) sommare l' ASCII delle lettere tranne l' ultima

2) Fare le 4 operazioni di generazione con il numero che hai ottenuto

3) Aggiungere tutte le lettere dopo le prime 3 del nick

 

Es :

Nick = Matteo

m = 109

a = 97

t = 116

t = 116

e = 101

 

valore_intermedio = 109+97+(116*2)+101 = 539

parte_numerica = ((((539+666)*12345)-23)*9) = 133881318

parte_letterale = teo ( tutto quello dopo le prime 3 lettere del nick )

seriale_finale = parte_numerica + parte_letterale = 133881318teo

Modificato da BeTmAsTeR
Link al commento
Condividi su altri siti

Uhm ora inizio a capire, faccio un paio di prove con altri crackme, sto provando t4y, il punto di inizio credo sia 7E3BA147 e da li svolge un putiferio di calcoli

Lascia perdere sto cercando quello della guida di predator è di un certo mikesh ma il link è guasto ,-,

Modificato da Melo_Wii
Link al commento
Condividi su altri siti

yee finalmente dopo che mi hai imboccato col cucchiaino mi sono fatto un keygennino in vb2008

 

http://img268.imageshack.us/img268/3779/keygen2b.png

 

 

EDIT: fixato il limite dei caratteri e bloccato il pulsante per ingrandire e altre cose meno importanti

 

http://www.mediafire.com/?quuhctzusf61u5s

Enjoy :D

Modificato da Melo_Wii
Link al commento
Condividi su altri siti

Crea un account o accedi per lasciare un commento

Devi essere un membro per lasciare un commento

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!

Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.

Accedi Ora

Giochi in Uscita



×
×
  • Crea Nuovo...