.:HoMe:.     .:CrackMe:.     .:My ProGGie:.     .:BuGs & ExpLoiTs:.     .:TOoLs:.     .:VaRiE:.

> CraCk Me n.1 Di active85k:SoLuTiOn <
Realizzato da NoRpiUs

ToOLz uTiLiZzATi:
- Debugger ( Olly Dbg )

SpiEgaZiOnE:
Oh la', non ho un kazzo da fare cosi mi son messo dietro a far qualche crack me mentre ascolto i grandissimi Lacuna Coil. Perfetto, cominciamo. Scopo di questo programma naturalmente non e' quello di patcharlo ma di creare un generatore di chiavi. Apriamo il debugger e mettiamo un bp su GetDlgItemTextA, mettiamo user e pass a caso e il debugger poppa:

 

CALL    <JMP.&USER32.GetDlgItemTextA>       ; prende il nome 
XOR      ECX,ECX                                                ; azzera ecx
LEA       EAX,DWORD PTR DS:[40300F]           ; carica in eax l'user
PUSH    EAX                                                         ; e pusha eax nello stack   

Ciclo:
MOV    BL,BYTE PTR DS:[ECX+EAX]               ; mette in bl la prima lettera dell'user
CMP     BL,0                                                          ; controlla se il nome e' finito
JE         SHORT CM01.00401085                         ; se si, esce
XOR     BL,10                                                        ; xora bl con 10h (16 decimale)
ADD     BL,CL                                                       ; adda cl a bl (che e' un contatore)
MOV    BYTE PTR DS:[ECX+EAX],BL               ; mette bl nel nome alla posizione di ecx
INC      ECX                                                          ; aumenta ecx di 1
JMP      Ciclo                                                          ; jumpa a inizio ciclo

In questo ciclo prende ogni lettera del nome, la xora con 16, il risultato lo somma a ecx ( che e' un contatore, cioe' a ogni ciclo aumenta di 1) e dopo quello che risulta in queste operazioni lo mette al posto della lettera presa. Dopo il programma prende il seriale e fa degli altri calcoli ma non ci interessano, visto che alla fine il risultato di quei calcoli deve essere uguale al risultato dei calcoli che fa col nome, quindi scriviamoci il nostro keygen finale e basta:

#include <stdio.h>
#include <string.h>

main() {

  int i, lun, serial = 0;
  char *nome;

  printf("Scrivi un nome: ");
  scanf("%s",nome);

  lun = strlen(nome);
  printf("Il serial e': ");
  for ( i = 0; i < lun; i++) 
  {
      serial = 0;
      serial += nome[i];
      serial ^= 16;
      serial += i;
      printf("%c",serial);
  }
}

Ok, eccoci alla fine... comunque questo e' un keygen che non funzia con tutti tutti i nomi.. perche' ogni tanto escono fuori delle lettere un po' strambe che in dos sono in un modo e in asm in un altro.. cmq con dei nomi non troppo lunghi la soluzione e' sempre giusta.

Byez.

 

 

Sito ottimizzato per:
Browser: I.E.
Risoluzione: 1024 x 768
.:ReVeRsiNg:.     .:CoNTaCt Me:.     .:LiNks:.     .:ThaNksTo:.     .:FuCkTo:.