Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: ny0x en 21 Mayo 2009, 00:12 am



Título: mi primer crackme
Publicado por: ny0x en 21 Mayo 2009, 00:12 am
Bueno me estuve dando una vuelta por este subforo y me parecio interesante el tema de los crackmes, asi que aqui les dejo mi primer crackme en C. La respuesta es un poco obvia, pero nunca habia intentado hacer un programa de estos.
http://www.megaupload.com/?d=M51KHACB

me estare leyendo los tutos porque no pude resolver el de  invisible y eso que todos dicen que esta facil. A ver si mis pocos conocimientos de asm me ayudan :P

espero les sirva aunque sea para distraerse un rato  ;D

P.D un user incorrecto o pass incorrecta provocan una exepcion. La unica manera de que no pase es poner el verdadero user y pass

1.-Høl¥   primero  ;-) ;-)
Arkangel_0x7C5 segundo   ;-) ;-)


Título: Re: mi primer crackme
Publicado por: Myth.ck en 21 Mayo 2009, 00:37 am
No se pudo iniciar la aplicación porque su configuración es incorrecta. :-\

Salu2!


Título: Re: mi primer crackme
Publicado por: ny0x en 21 Mayo 2009, 00:41 am
dime la info de tu SO para ver, de todas maneras lo recompilo y lo vuelvo a subir


Título: Re: mi primer crackme
Publicado por: Myth.ck en 21 Mayo 2009, 00:42 am
Xp Professional Ed. Sp2


Título: Re: mi primer crackme
Publicado por: ny0x en 21 Mayo 2009, 01:11 am
listo ya lo lo recompile y lo volvi a subir, mando tambien el obj por si se necesita compilar, otra ves use el borland c++ 5.5, en windows xp sp3, el otro habia sido con VC 2008


Título: Re: mi primer crackme
Publicado por: Myth.ck en 21 Mayo 2009, 01:25 am
Funciona correctamente  ::)


Título: Re: mi primer crackme
Publicado por: Arkangel_0x7C5 en 21 Mayo 2009, 01:37 am
jeje, estoy en la zona de comparacion.

Esto da mas vueltas que un molino jeje


Título: Re: mi primer crackme
Publicado por: ny0x en 21 Mayo 2009, 02:05 am
ni intenten buscar el pass dentro del ejecutable por que no esta  ::), mas bien es por un poco de razonamiento


Título: Re: mi primer crackme
Publicado por: Høl¥ en 21 Mayo 2009, 16:55 pm
Muy bueno el crackme , si señor  ;D

En un principio no lo podia entender, este crackme no es como otros, no
hay que buscar por comparaciones si no solo mirar el codigo y por logica
se saca xD

La verdad es que es muy ingenioso el user y la pass, pero aquellos que no
sepan algo de programacion basica de windows dudo que lo resuelvan ^^

Te mande por PM el user / pass.


Título: Re: mi primer crackme
Publicado por: ny0x en 23 Mayo 2009, 17:30 pm
Que pasa? nadie se anima :-[, hasta ahorita nada mas Høl¥ lo ha logrado (no se cuantos lo hayan intentado  :P ), vamos animense no esta para nada dificil, tomen en cuenta que es el primero que hago y no soy muy bueno progrmando

saludos


Título: Re: mi primer crackme
Publicado por: Arkangel_0x7C5 en 23 Mayo 2009, 17:51 pm
pos yo me canse de buscarlo jeje. Yo no me dedico mucho a esto de la ingeniería inversa

Voy a tener que cojer uno de esos manuales de Ingeniería Inversa jeje


Saludos
PD:muy bien conseguido mi amigo regx\ny0x


Título: Re: mi primer crackme
Publicado por: ny0x en 23 Mayo 2009, 18:05 pm
bueno veremos quien mas se anima, lo dejare una semana y si nadie se anima, pondre el codigo fuente y explicare (en lo posible  :P ) como funciona. Mis felicitaciones a Høl¥ que lo resolvio   ;-)

P.D El crackme no se trata de buscar el user y el pass en el ejecutable sino ver como funciona y deducir la respuesta, les deje una pista: la exepcion producida si te equivocas, ¿alguien se ha preguntado por que pasa?


Título: Re: mi primer crackme
Publicado por: Arkangel_0x7C5 en 23 Mayo 2009, 18:34 pm
Segun la msdn tienes 2 nombres de usuario y una contraseña. Pero no sale el mensaje jeje

PD:Se y no se la clave jeje


Título: Re: mi primer crackme
Publicado por: Red Mx en 23 Mayo 2009, 18:39 pm
ya no lo pued descargar  deberias poner varios mirros.


Título: Re: mi primer crackme
Publicado por: ny0x en 23 Mayo 2009, 19:20 pm
no me regañen  ;D , ahorita lo vuelvo a subir inxe rapidshit, arkangel esta cerca de la respuesta

Edit:
ya esta el nuevo enlace de descarga, si da problemas avisen


Título: Re: mi primer crackme
Publicado por: Arkangel_0x7C5 en 24 Mayo 2009, 03:52 am
Costo pero ya esta, Añade me de una .. vez

Saludos
PD:Es el primero y ya le tira fuerte jeje o que yo soy malo en esto.


Título: Re: mi primer crackme
Publicado por: ny0x en 28 Mayo 2009, 22:24 pm
bueno como creo que nadie mas se va a animar, dejo el codigo fuente

Código
  1. #include <windows.h>
  2. #include <iostream>
  3. using namespace std;
  4. char* cr(char* cadena);
  5. void parse(char *cadena,char *cad);
  6. char* txt="üÿöóùóþûþÿé";
  7. char* msg="èÿýâºþóùÿ ";
  8. int main()
  9. {
  10. cout<<"Escribe el usuario: ";
  11. char pass[1024], name[1024];
  12. cin>>pass;
  13. cout<<"Contraseña:";
  14. cin>>name;
  15. parse(pass,name);
  16. }
  17. char* cr(char* cadena)
  18. {
  19. int _size = lstrlen(cadena);
  20.    char* cade=new char[_size];
  21.    lstrcpy(cade,cadena);
  22.    char* vptr=cade;
  23.    for(int Ctr=0;Ctr<_size;Ctr++)
  24.    {
  25.            *vptr ^= 0x29A;
  26.            vptr++;
  27.    }
  28.    return cade;
  29. }
  30. void parse(char *cadena,char *cad)
  31. {
  32. char p[1024],p2[1024];
  33. lstrcpy(p,cr(cadena));
  34. lstrcpy(p2,cr(cad));
  35. HMODULE h = LoadLibrary(cad);
  36. typedef int (WINAPI* pt)(HWND,LPCSTR,LPCSTR,UINT);
  37. pt exito = (pt)GetProcAddress(h,cadena);
  38. exito(0,cr(txt),cr(msg),0);
  39. }
  40.  

Como pueden ver no es gran cosa, en resumen lo que hace es pedir la contraseña y el user que en realidad es el nombre de una dll y una funcion. El programa no comprueba que el resultado sea correcto para que no sea detectado con un simple analisis de cadenas. Entonces como se resuelve? pues buscando el sitio del crash (si introduces el nombre de una api o dll inexistente se produce un crash). Una vez encontrado solo hay que buscar analizar el codigo desensamblado un poco mas arriba y te daras cuenta de lo que es el user y el pass, ya que se usa LoadLibrary y GetProcAddress.
Ahora el segundo paso consiste en encontrar una api y una libreria que rellene el hueco para poner como user y pass, y como generalmente los crackmes te informan cuando acertaste. Uno puede deducir con un poco de paciencia que se trata de MessageBoxA.
Por lo tanto la respuesta es:
usuario: MessageBoxA
pass: user32.dll

El codigo es muy basico, se podria mejorar comprobando que LoadLibrary no devuelva un handle invalido para evitar el crash, y sea un poquito mas dificil encontrar el punto esencial.
Queria darle un mejor uso a la enciptacion barata pero bueh, por lo menos hizo un poco mas de bulto  ;D.
Felicidades a los que lo resolvieron ;-) y gracias por su tiempo

saludos


Título: Re: mi primer crackme
Publicado por: Amerikano|Cls en 12 Junio 2009, 07:59 am
Perdon a los mods por revivir este tema pero Hombre justo cuando estoy con tiempo libre y buscando crackmes para matar el tiempo veo que ya haz puesto el fuente mm, no es bueno porque sino la gente que mira los temas antiguos como yo no tendrian oportunidad de ver el crackme y entretenerse un rato, que por cierto esta interesante por lo que muestra el src, pero bueno a otra será jeje.

salu2