Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: jEUDi17 en 19 Julio 2012, 09:13 am



Título: KeygenMe01 - C++
Publicado por: jEUDi17 en 19 Julio 2012, 09:13 am
Hola, quiero compartir con todos ustedes este programa hecho con dev-c++.

Es de estos de encontrar un serial valido para cada nombre.

Algunas aclaraciones :
Esta empaquetado con Aspack 2.xx
Es un codigo muy corto, talvez lo resuelvas en menos de 5 minutos.


Mi nombre real es : Jeudy
Tengo 14 años y vivo en Costa Rica.

Si tienen tiempo para resolverlo y hacer un tutorial me encantaria, porq yo quiero aprender este arte tan bonito, yo siempre lo intento pero nose porque no puedo aprenderlo, yo intento pero no puedo, por esa razon me gustaria que hicieras un tutorial y explicaras como lo resolviste, porfavor me gustaria aprender con ustedes este maravilloso arte, espero q no se molesten por pedirles un tutorial.

http://www.2shared.com/file/xXudJvHy/Programa01.html (http://www.2shared.com/file/xXudJvHy/Programa01.html)
Link nuevo (http://www.2shared.com/file/oc6b27q9/Programa01_resubido.html)

PD : Nuevo link, el anterior no funciona ya.

Nos vemos luego, saludos!


Título: Re: KeygenMe01 - C++
Publicado por: Stakewinner00 en 19 Julio 2012, 10:06 am
Hay tutoriales muy buenos por internet.

en este link hay un tutorial muy bueno

http://ricardonarvaja.info/WEB/INTRODUCCION%20AL%20CRACKING%20CON%20OLLYDBG%20DESDE%20CERO/ (http://ricardonarvaja.info/WEB/INTRODUCCION%20AL%20CRACKING%20CON%20OLLYDBG%20DESDE%20CERO/)


Título: Re: KeygenMe01 - C++
Publicado por: Puntoinfinito en 19 Julio 2012, 17:57 pm
Que arte es el que no puedes aprender, el de la programación o el de el hacking, cracking, etc. ?

Podrias pasar el código del crackme?


Título: Re: KeygenMe01 - C++
Publicado por: jEUDi17 en 19 Julio 2012, 18:22 pm
El de el cracking, tambien me cuesta bastante c++.


Título: Re: KeygenMe01 - C++
Publicado por: Puntoinfinito en 19 Julio 2012, 18:45 pm
Yo te puedo recomendar uno de C++; www.learncpp.com/
Y en formato vídeo y en español; http://www.illasaron.com/html/modules.php?name=Downloads&d_op=viewdownload&cid=122

Por cierto, tienes el código del crackme?

Saludos


Título: Re: KeygenMe01 - C++
Publicado por: jEUDi17 en 19 Julio 2012, 18:48 pm
Yo te puedo recomendar uno de C++; www.learncpp.com/
Y en formato vídeo y en español; http://www.illasaron.com/html/modules.php?name=Downloads&d_op=viewdownload&cid=122

Por cierto, tienes el código del crackme?

Saludos

Síp, la verdad lo hice yo si quieres te lo doy ?


Título: Re: KeygenMe01 - C++
Publicado por: apuromafo CLS en 19 Julio 2012, 18:49 pm
0044B3AF   61               POPAD
0044B3B0   75 08            JNZ SHORT KeygenMe.0044B3BA
0044B3B2   B8 01000000      MOV EAX,1
0044B3B7   C2 0C00          RETN 0C
0044B3BA   68 20124000      PUSH KeygenMe.00401220
0044B3BF   C3               RETN

oep:00401220
iat:0044A1E0  7C8392A3  £’ƒ|  kernel32.AddAtomA
largo 170


   55               PUSH EBP
algoritmo a estudiar:

00401423   837D A0 0A       CMP DWORD PTR SS:[EBP-60],0A
00401427   7E 61            JLE SHORT KeygenMe.0040148A
00401429   C70424 20204400  MOV DWORD PTR SS:[ESP],KeygenMe.00442020 ; ASCII "cls"
00401430   E8 5B0B0100      CALL KeygenMe.00411F90                   ; JMP to msvcrt.system
00401435   C70424 04000000  MOV DWORD PTR SS:[ESP],4
0040143C   E8 EF160000      CALL KeygenMe.00402B30
00401441   C74424 04 020000>MOV DWORD PTR SS:[ESP+4],2
00401449   C70424 02000000  MOV DWORD PTR SS:[ESP],2
00401450   E8 5B140000      CALL KeygenMe.004028B0
00401455   C74424 04 242044>MOV DWORD PTR SS:[ESP+4],KeygenMe.004420>; ASCII "La cantidad de caracteres excede el valor maximo"
0040145D   C70424 F0534400  MOV DWORD PTR SS:[ESP],KeygenMe.004453F0
00401464   E8 DFC50300      CALL KeygenMe.0043DA48


por lo cual no puede ser usuarios o seriales mayores a 0a->10carácteres


0040148A   837D A0 02       CMP DWORD PTR SS:[EBP-60],2
0040148E   7F 61            JG SHORT KeygenMe.004014F1
00401490   C70424 20204400  MOV DWORD PTR SS:[ESP],KeygenMe.00442020 ; ASCII "cls"
00401497   E8 F40A0100      CALL KeygenMe.00411F90                   ; JMP to msvcrt.system
0040149C   C70424 04000000  MOV DWORD PTR SS:[ESP],4
004014A3   E8 88160000      CALL KeygenMe.00402B30
004014A8   C74424 04 020000>MOV DWORD PTR SS:[ESP+4],2
004014B0   C70424 02000000  MOV DWORD PTR SS:[ESP],2
004014B7   E8 F4130000      CALL KeygenMe.004028B0
004014BC   C74424 04 552044>MOV DWORD PTR SS:[ESP+4],KeygenMe.004420>; ASCII "Hay muy pocos caracteres."
004014C4   C70424 F0534400  MOV DWORD PTR SS:[ESP],KeygenMe.004453F0

y mayores a 2

respecto a usuario y serial aun confirmo.. pero debe ser interesante para los mas nuevos...


Título: Re: KeygenMe01 - C++
Publicado por: Puntoinfinito en 19 Julio 2012, 18:50 pm
Sí por favor... damelo :)


Título: Re: KeygenMe01 - C++
Publicado por: jEUDi17 en 19 Julio 2012, 18:55 pm
0044B3AF   61               POPAD
0044B3B0   75 08            JNZ SHORT KeygenMe.0044B3BA
0044B3B2   B8 01000000      MOV EAX,1
0044B3B7   C2 0C00          RETN 0C
0044B3BA   68 20124000      PUSH KeygenMe.00401220
0044B3BF   C3               RETN

oep:00401220
iat:0044A1E0  7C8392A3  £’ƒ|  kernel32.AddAtomA
largo 170


   55               PUSH EBP
algoritmo a estudiar:

00401423   837D A0 0A       CMP DWORD PTR SS:[EBP-60],0A
00401427   7E 61            JLE SHORT KeygenMe.0040148A
00401429   C70424 20204400  MOV DWORD PTR SS:[ESP],KeygenMe.00442020 ; ASCII "cls"
00401430   E8 5B0B0100      CALL KeygenMe.00411F90                   ; JMP to msvcrt.system
00401435   C70424 04000000  MOV DWORD PTR SS:[ESP],4
0040143C   E8 EF160000      CALL KeygenMe.00402B30
00401441   C74424 04 020000>MOV DWORD PTR SS:[ESP+4],2
00401449   C70424 02000000  MOV DWORD PTR SS:[ESP],2
00401450   E8 5B140000      CALL KeygenMe.004028B0
00401455   C74424 04 242044>MOV DWORD PTR SS:[ESP+4],KeygenMe.004420>; ASCII "La cantidad de caracteres excede el valor maximo"
0040145D   C70424 F0534400  MOV DWORD PTR SS:[ESP],KeygenMe.004453F0
00401464   E8 DFC50300      CALL KeygenMe.0043DA48


por lo cual no puede ser usuarios o seriales mayores a 0a->10carácteres


0040148A   837D A0 02       CMP DWORD PTR SS:[EBP-60],2
0040148E   7F 61            JG SHORT KeygenMe.004014F1
00401490   C70424 20204400  MOV DWORD PTR SS:[ESP],KeygenMe.00442020 ; ASCII "cls"
00401497   E8 F40A0100      CALL KeygenMe.00411F90                   ; JMP to msvcrt.system
0040149C   C70424 04000000  MOV DWORD PTR SS:[ESP],4
004014A3   E8 88160000      CALL KeygenMe.00402B30
004014A8   C74424 04 020000>MOV DWORD PTR SS:[ESP+4],2
004014B0   C70424 02000000  MOV DWORD PTR SS:[ESP],2
004014B7   E8 F4130000      CALL KeygenMe.004028B0
004014BC   C74424 04 552044>MOV DWORD PTR SS:[ESP+4],KeygenMe.004420>; ASCII "Hay muy pocos caracteres."
004014C4   C70424 F0534400  MOV DWORD PTR SS:[ESP],KeygenMe.004453F0

y mayores a 2

respecto a usuario y serial aun confirmo.. pero debe ser interesante para los mas nuevos...

Gracias por tomarte el tiempo en analizarlo, en serio muchas gracias!
No te tomo mucho tiempo hacerlo, eres muy bueno!

saludos apuromafo


Título: Re: KeygenMe01 - C++
Publicado por: karmany en 19 Julio 2012, 19:57 pm
jEUDi17

Muchísimas gracias por tu keygenMe01 y bienvenido.

Para los usuarios que se inician, es recomendable que le echéis un vistazo, por ejemplo, cómo saber llegar al OEP en un sencillo AsPack.

Yo creo que no deberías publicar el código fuente, porque si no quitas "la gracia" de lo que es un CrackMe. En todo caso cuando sea resuelto, se haga un tutorial... más adelante

Gracias
Un saludo


Título: Re: KeygenMe01 - C++
Publicado por: Tinkipinki en 19 Julio 2012, 20:39 pm
Hola a todos:
La solució esta una vez desempackado en:
Código:
0040160E  |.  3B45 88       CMP EAX,DWORD PTR SS:[EBP-78]  

Si cogeis el resultado de la comparacion que se encuentra en EAX  y la convertis a decimal os dara el serial correcto para el name que habeis entrado.

Seria muy interesante poder hacer un keygen  o que alguien explicara la rutina del calculo y asi profundizar un poco mas.
Si alguien tiene dudas de como llegar hasta aquí, que no dude en preguntar.

Agradecer a  jEUDi17 por compartir su trabajo... ;-)

Saludos


Título: Re: KeygenMe01 - C++
Publicado por: jEUDi17 en 19 Julio 2012, 20:54 pm
jEUDi17

Muchísimas gracias por tu keygenMe01 y bienvenido.

Para los usuarios que se inician, es recomendable que le echéis un vistazo, por ejemplo, cómo saber llegar al OEP en un sencillo AsPack.

Yo creo que no deberías publicar el código fuente, porque si no quitas "la gracia" de lo que es un CrackMe. En todo caso cuando sea resuelto, se haga un tutorial... más adelante

Gracias
Un saludo
jEUDi17

Muchísimas gracias por tu keygenMe01 y bienvenido.

Para los usuarios que se inician, es recomendable que le echéis un vistazo, por ejemplo, cómo saber llegar al OEP en un sencillo AsPack.

Yo creo que no deberías publicar el código fuente, porque si no quitas "la gracia" de lo que es un CrackMe. En todo caso cuando sea resuelto, se haga un tutorial... más adelante

Gracias
Un saludo

Gracias a los 2 por comentar, no voi a dar el codigo fuente, despues lo posteare.

Saludos a los 2 y buen día.

Tinkipinki buen trabajo (: y gracias por resolverlo.


Título: Re: KeygenMe01 - C++
Publicado por: jEUDi17 en 19 Julio 2012, 21:02 pm
Hay tutoriales muy buenos por internet.

en este link hay un tutorial muy bueno

http://ricardonarvaja.info/WEB/INTRODUCCION%20AL%20CRACKING%20CON%20OLLYDBG%20DESDE%20CERO/ (http://ricardonarvaja.info/WEB/INTRODUCCION%20AL%20CRACKING%20CON%20OLLYDBG%20DESDE%20CERO/)

Gracias por comentar, ese es el problema nose porque no puedo aprender lo que explica allí.

Buen dia (:


Título: Re: KeygenMe01 - C++
Publicado por: Stakewinner00 en 19 Julio 2012, 21:05 pm
Gracias por comentar, ese es el problema nose porque no puedo aprender lo que explica allí.

Buen dia (:

Bueno tengo 15 años y cuando me puse a intentar a aprender cracking tampoco podi aespere como 2 messes y despues ya me fue todo mejor.

Quizas es que aun no lo entiendes y te falta madurar un tiempo para entenderlo todo con facilidad?

En todo caso lo k yo haria seria irme a otro lado durante un tiempo y luego regresaria para ver sy ya puedo aprenderlo.

Nose si se ha entendido mucho  :P


Título: Re: KeygenMe01 - C++
Publicado por: Puntoinfinito en 19 Julio 2012, 23:00 pm
Pásamelo por MP por favor...   :-X


Título: Re: KeygenMe01 - C++
Publicado por: jEUDi17 en 19 Julio 2012, 23:10 pm
Pásamelo por MP por favor...   :-X

No puedo amigo, intenta resolverlo y sacar el keygen tu mismo.

Espero que no te molestes.


Título: Re: KeygenMe01 - C++
Publicado por: MCKSys Argentina en 19 Julio 2012, 23:47 pm
MCKSys
353
 :P

PD: Si hago tiempo, sale keygen...


Título: Re: KeygenMe01 - C++
Publicado por: jEUDi17 en 20 Julio 2012, 00:16 am
MCKSys
353
 :P

PD: Si hago tiempo, sale keygen...

de maravilla funciona, gracias por resolverlo.

Espero el keygen!


Título: Re: KeygenMe01 - C++
Publicado por: MCKSys Argentina en 20 Julio 2012, 02:02 am
La comprobacion del serial esta mal. Si ingresas un UserName de 3 caracteres (por ej. abc), el calculo se hace en forma incorrecta.

En esta parte:

Código:
00401579    C745 84 00000000        MOV DWORD PTR SS:[EBP-7C],0
00401580    8B45 84                 /MOV EAX,DWORD PTR SS:[EBP-7C]
00401583    3B45 9C                 |CMP EAX,DWORD PTR SS:[EBP-64]
00401586    7D 27                   |JGE SHORT KeygenMe.004015AF
00401588    8D45 F8                 |LEA EAX,DWORD PTR SS:[EBP-8]
0040158B    0345 84                 |ADD EAX,DWORD PTR SS:[EBP-7C]
0040158E    83E8 10                 |SUB EAX,10
00401591    0FBE10                  |MOVSX EDX,BYTE PTR DS:[EAX]
00401594    8D45 F8                 |LEA EAX,DWORD PTR SS:[EBP-8]
00401597    0345 84                 |ADD EAX,DWORD PTR SS:[EBP-7C]
0040159A    83E8 0E                 |SUB EAX,0E
0040159D    0FBE00                  |MOVSX EAX,BYTE PTR DS:[EAX]
004015A0    31D0                    |XOR EAX,EDX
004015A2    83C0 09                 |ADD EAX,9
004015A5    8945 94                 |MOV DWORD PTR SS:[EBP-6C],EAX
004015A8    8D45 84                 |LEA EAX,DWORD PTR SS:[EBP-7C]
004015AB    FF00                    |INC DWORD PTR DS:[EAX]
004015AD  ^ EB D1                   \JMP SHORT KeygenMe.00401580

Aqui se calcula un DWORD que despues sera usado para XORear.

En resumen, despues de ejecutar el bucle, lo que hace esto es:

xordw2 = (username[2] xor username[4]) + 9

Como ven, si el Username tiene 3 chars, entonces username[4] lee un byte de afuera del string.

En resumen, el serial se calcularia asi:

xordw1 = username[3] + 02Dh
xordw2 = (username[3] xor username[5]) + 9
xordw3 = (xordw2 xor xordw1) + 7
xordw4 = (xordw3 xor xordw2) + 019h

serial = xordw3 + xordw4 + 02Dh

Pero bueno, calculo que se podria hacer un keygen para Usernames ede largo 4 a 10...  ;D

Saludos!


Título: Re: KeygenMe01 - C++
Publicado por: jEUDi17 en 20 Julio 2012, 02:07 am
La comprobacion del serial esta mal. Si ingresas un UserName de 3 caracteres (por ej. abc), el calculo se hace en forma incorrecta.

En esta parte:

Código:
00401579    C745 84 00000000        MOV DWORD PTR SS:[EBP-7C],0
00401580    8B45 84                 /MOV EAX,DWORD PTR SS:[EBP-7C]
00401583    3B45 9C                 |CMP EAX,DWORD PTR SS:[EBP-64]
00401586    7D 27                   |JGE SHORT KeygenMe.004015AF
00401588    8D45 F8                 |LEA EAX,DWORD PTR SS:[EBP-8]
0040158B    0345 84                 |ADD EAX,DWORD PTR SS:[EBP-7C]
0040158E    83E8 10                 |SUB EAX,10
00401591    0FBE10                  |MOVSX EDX,BYTE PTR DS:[EAX]
00401594    8D45 F8                 |LEA EAX,DWORD PTR SS:[EBP-8]
00401597    0345 84                 |ADD EAX,DWORD PTR SS:[EBP-7C]
0040159A    83E8 0E                 |SUB EAX,0E
0040159D    0FBE00                  |MOVSX EAX,BYTE PTR DS:[EAX]
004015A0    31D0                    |XOR EAX,EDX
004015A2    83C0 09                 |ADD EAX,9
004015A5    8945 94                 |MOV DWORD PTR SS:[EBP-6C],EAX
004015A8    8D45 84                 |LEA EAX,DWORD PTR SS:[EBP-7C]
004015AB    FF00                    |INC DWORD PTR DS:[EAX]
004015AD  ^ EB D1                   \JMP SHORT KeygenMe.00401580

Aqui se calcula un DWORD que despues sera usado para XORear.

En resumen, despues de ejecutar el bucle, lo que hace esto es:

xordw2 = (username[2] xor username[4]) + 9

Como ven, si el Username tiene 3 chars, entonces username[4] lee un byte de afuera del string.

En resumen, el serial se calcularia asi:

xordw1 = username[3] + 02Dh
xordw2 = (username[3] xor username[5]) + 9
xordw3 = (xordw2 xor xordw1) + 7
xordw4 = (xordw3 xor xordw2) + 019h

serial = xordw3 + xordw4 + 02Dh

Pero bueno, calculo que se podria hacer un keygen para Usernames ede largo 4 a 10...  ;D

Saludos!

Disculpa, no me fije en eso, cuando estaba haciendo el programa me fije mas que el programa genere un key para cada nombre, que fijarme en los errores que habia para el nombre de 3 caracteres.

Intentaré ver como se soluciona eso, gracias por la aclaración y saludos.

MCKSys Argentina gracias por tormarte el tiempo en analizar.


Título: Re: KeygenMe01 - C++
Publicado por: Flamer en 20 Julio 2012, 06:20 am
Hola jEUDi17 lo acabo de bajar y le heche un simple vistaso el desempacado de este aspack esta fasil igual que el upx.
bueno el serial para Flamer seria igual a 343

ahora boy por el keygen

saludos flamer y gracias por el reto faltan mas de estos en el foro ;-) ;-)


Título: Re: KeygenMe01 - C++
Publicado por: Flamer en 21 Julio 2012, 00:35 am
Hola jEUDi17 aqui tienes el keygen para tu reto

http://ultrashare.net/hosting/fl/104e97b849/KeyGen
 (http://ultrashare.net/hosting/fl/104e97b849/KeyGen)
y con musica y todo el shouw... >:D

dime que te paresio

Saludos Flamer ;-)


Título: Re: KeygenMe01 - C++
Publicado por: jEUDi17 en 21 Julio 2012, 02:40 am
Hola jEUDi17 aqui tienes el keygen para tu reto

http://ultrashare.net/hosting/fl/104e97b849/KeyGen
 (http://ultrashare.net/hosting/fl/104e97b849/KeyGen)
y con musica y todo el shouw... >:D

dime que te paresio

Saludos Flamer ;-)

Simplemente sin palabras! exelente trabajo flamer.

Gracias por hacerlo.

nos vemos luego.


Título: Re: KeygenMe01 - C++
Publicado por: Puntoinfinito en 21 Julio 2012, 11:10 am
Wow, gran trabajo. Con que lo has desarrollado?


Título: Re: KeygenMe01 - C++
Publicado por: Tinkipinki en 21 Julio 2012, 12:55 pm
Ok,  Klamer.... +1    ;-)
Saludos


Título: Re: KeygenMe01 - C++
Publicado por: Flamer en 21 Julio 2012, 17:24 pm
Citar
Cita Publicado por: puntoinfinito
Wow, gran trabajo. Con que lo has desarrollado?
Hola el Keygen esta hecho en vb6

Citar
Cita Publicado por: Tinkipinki
Ok,  Klamer.... +1    ;-)
Saludos
gracias Tinki