Vai al contenuto

BeTmAsTeR

Utente
  • Numero contenuti

    824
  • Iscritto

  • Ultima visita

Risposte pubblicato da BeTmAsTeR

  1. http://img508.imageshack.us/img508/2745/reversev.png

     

     

    hai sbagliato un paio di cose

     

    MOV AL,BYTE PTR [ESI]

    BYTE PRT stà per Byte Pointer, ed ESI è il puntatore quindi

    Muovi in AL quello che stà puntando ESI

     

    XOR EAX,EDX non calcola nessun vettore, è solo un operazione

     

    MOV ESI,Easy_Key.004031FC Copia in ESI quello che è contenuto in 004031FC

     

    MOV ECX,DWORD PTR [40318C]

    DWORD PTR, Double word pointer, come ti ho spiegato prima ma spostando una DWORD

  2. La classifica delle 10 cose che vorreste fare prima di morire

     

    1) Bunjee Jumping dal Bloukrans Bridge ( 216mt )

    2) Visitare gli stati uniti

    3) Vedere l' aurora boreale

    4) Creare un blog/sito di successo

    5) Vedere le piramidi

    6) Salire sul tetto del mondo (everest)

    7) Far crescere un bonsai

    8) Prendere la laurea in informatica

    9) Essere d' esempio a qualcuno

    10) Allungare questa lista

     

    a voi

  3. 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

×
×
  • Crea Nuovo...