Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: P[i] en 7 Julio 2006, 16:16 pm



Título: Crackme1 por p[i].
Publicado por: P[i] en 7 Julio 2006, 16:16 pm
 

  Aki os dejo mi primer crackme, esta en modo consola porke no tuve tiempo de poner ventanita y todo eso. Creo que es facil de resolver pero bueno.
  Crackme1 por p -> http://es.geocities.com/serxoker/Crackme1.zip
 Lo interesante seria sacar el serial no parchearlo, pero bueno ahi keda para uso y disfrute.
 Saludos.


Título: Re: Crackme1 por p[i].
Publicado por: x4uth en 8 Julio 2006, 05:18 am
un serial valido aFMDULCJKBIPAHOPGN


Título: Re: Crackme1 por p[i].
Publicado por: x4uth en 8 Julio 2006, 06:05 am
y bueno me lo e currado un poquito mejor y ahi esta el generador de claves

http://www.freeuploader.com/out.php/i19604_pickme01GEN.rar


Título: Re: Crackme1 por p[i].
Publicado por: P[i] en 8 Julio 2006, 11:34 am

 Mu wapo tio, con generador y todo. Bueno la proxima vez me currare mas el crackme pa que sea mas dificil.
 Chao.


Título: Re: Crackme1 por p[i].
Publicado por: frankener1986 en 11 Julio 2006, 20:10 pm
xD a ver si te animas y dejas el source de este keygen xD... m vendria dpm para aprender la verdad... xk intento hacer mios yo pero no se que errores haog k nunca me funcionan xD, solo si kieres eee ^^

saludos!


Título: Re: Crackme1 por p[i].
Publicado por: x4uth en 11 Julio 2006, 22:41 pm
La verdad no me e complciado mucho la vida, esta en mfc para terminar rapido y practicamente imita el codigo del CrackME
al darle al boton se ejecuta esta funcion

void Cpickme01Dlg::OnBnClickedGenerate()
{
char key[21];
key[0]=rand()%25+'A'; //toda la clave depende del primer caracter asi que si queremos uno aleatorio debemos empezar por generar la primera letra aleatoria (como el resto del serial queda en mayusculas ahi genere una mayuscula para que quede mas bonito xD)
int x;
for(x=1;x<19;x++) //el CrackMe hace un loop que es mas o menos este solo que despues de llamar a la funcion que efectua operaciones con el caracter comprueba que el numero que le sigue es = que el que devolvio dicha funcion, asi que yo se lo asigno al siguente
{
DATA=(key[0]+x);
getnext();  //la funcion que hace las operaciones la e copiado textualmente ya que hace exactamente lo que yo quiero
key[ x ]=DATA;
}
key[18]=0; //aqui ya temeos la key lista, fixeamos la string ya solo queda mostrarla..
ver.Format("%s",key);
UpdateData(false);

}


void getnext() {
   _asm{

  MOV EDX,DATA
  MOV EAX,EDX
  SHL EAX,06h
  ADD EAX,EDX
  MOV DATA,EAX
  MOV ECX,DATA
  MOV EAX,0B60B60B7h
  IMUL ECX
  LEA EAX,DWORD PTR DS:[EDX+ECX]
  MOV EDX,EAX
  SAR EDX,06h
  MOV EAX,ECX
  SAR EAX,01Fh
  SUB EDX,EAX
  MOV EAX,EDX
  IMUL EAX,EAX,05Ah
  SUB ECX,EAX
  MOV EAX,ECX
  MOV DATA,EAX
L021:
  CMP DATA,40h
  JLE L024
  JMP L026
L024:
  ADD DATA,10h
  JMP L021
L026:
  MOV EAX,DATA
   }

}


Título: Re: Crackme1 por p[i].
Publicado por: frankener1986 en 12 Julio 2006, 16:19 pm
oye.. como sabes donde empezar a copiar el asm..? ^^ yos iempre m ekivoko ^^


Título: Re: Crackme1 por p[i].
Publicado por: x4uth en 12 Julio 2006, 18:07 pm
solo copias ASM cuando es una parte que vas a usar en tu programa, para eso tienes que tener claro que es lo que hace cada cosa y si  tienes claro que es cada cosa entonces no deberias tener problemas para saber que coger...

en este caso e copiado el CALL completo solo e quirtado
PUSH EBP  // guarda la posicion del stack
...
...
...
POP EBP // recupera la posion del stack
RET //vuelve del call

y las e quitado xk se que mi compilador de C++ agrega esa parte auntomaticamente en todos los CALL y si esta doble puede dar problemas logicamente...


Título: Re: Crackme1 por p[i].
Publicado por: frankener1986 en 12 Julio 2006, 18:10 pm
oks.. en realidad lo que keria preguntar era que instrucciones se usan para guardar valores introducidos... es decir, en que "variable"


Título: Re: Crackme1 por p[i].
Publicado por: x4uth en 12 Julio 2006, 18:14 pm
pos ahi ya depende de lo que vayas a guardar, en este caso e usado la variable DATA que lo que hace es almacenar el contenido de los registros que son DWORD asi que DATA tambien sera DWORD


Título: Re: Crackme1 por p[i].
Publicado por: frankener1986 en 12 Julio 2006, 18:35 pm
jaja muxas gracias tio.. con razon no m funcionaban mis keygens anteriores xDD me has aclarado muxo!! thx!


Título: Re: Crackme1 por p[i].
Publicado por: Chodi en 13 Septiembre 2006, 18:14 pm
.... Alguien me lo peude confirmar?? si la ocntraseña empieza por "C" el sexto caracter, debe ser el caracter NULL.

PD:Perdon, no me acordaba del bucle de suma 10h. Sorry xDD.
PS2: Aqui teneis mi pass: CJKBIPAHOP y sin ayuda :-P xDDD