Safebox Crackme

Iniciado por sadfud, 6 Mayo 2016, 17:26 PM

0 Miembros y 1 Visitante están viendo este tema.

sadfud

Buenas
Vengo a dejar un crackme algo mas innovador de lo que se suele encontrar por ahí, la idea se me ocurrió hace un rato al volver de clase, tenia al lado un chaval jugando a un juego en android con el mismo concepto, aunque estéticamente mucho mas bonito xD

Como se ve en la imagen en este crackme hay que manejar las barras laterales hasta dar con la combinación correcta que abra la caja fuerte.
La idea es interpretar el funcionamiento desde algún debugger, ya que no tiene protección ninguna, lo único que esta limitado a 10 intentos, quizás alguien tenga suerte y lo acierte en esos primeros 10 intentos, aunque hay 100000 posibles combinaciones. Por tanto hay una posibilidad entre 10000 de acertar aleatoriamente. [size=85]Suerte xD.[/size]
Como dato añadir que esta escrito en .net y el código no esta ofuscado.  Ademas los valores aleatorios, que evidentemente oscilan entre 0 y 9 se generan diferentes en cada ejecución.
http://www.mediafire.com/download/unswaz6tj2isat7/SafeBox+Crackme.zip
analisis
https://www.virustotal.com/en/file/eabcd80079a217a5c2efbb8bf1afa28981fc152c532eb97e76cfa00532743794/analysis/1462548587/

MCKSys Argentina

Cita de: sadfud en  6 Mayo 2016, 17:26 PM
Como dato añadir que esta escrito en .net y el código no esta ofuscado.  Ademas los valores aleatorios, que evidentemente oscilan entre 0 y 9 se generan diferentes en cada ejecución.

La verdad, el tema no me cierra: cual es el reto? Adivinar un codigo que nadie va a poder comprobar, ya que cambia con cada ejecucion?

Creo que ese aspecto deberias repensarlo.

Aunque, bueno, es mi opinión...  :P

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


ThunderCls

#2
Ademas de lo que ya ha dicho MCKSys (valores aleatorios como valores de comprobación mmmmm...no, a ver, es impensable usar eso en un sistema de registro en la vida real, así que por lo de innovador...mmm como que no, sin que te lo tomes a mal)
Luego esta el tema de que ademas cometes un error muy grande en el código para generar los cinco valores aleatorios, a ver, usas:

Código (csharp) [Seleccionar]

this.numAleatorio1 = new Random();
this.valor1 = this.numAleatorio1.Next(0, 9);
this.numAleatorio2 = new Random();
this.valor2 = this.numAleatorio2.Next(0, 9);
this.numAleatorio3 = new Random();
this.valor3 = this.numAleatorio3.Next(0, 9);
this.numAleatorio4 = new Random();
this.valor4 = this.numAleatorio4.Next(0, 9);
this.numAleatorio5 = new Random();
this.valor5 = this.numAleatorio5.Next(0, 9);


Lo que siempre te dará cinco valores "aleatorios" idénticos, pues estas usando cinco clases Random que daran el mismo numero inicial  :-\. La cosa deberia ser algo como:

Código (csharp) [Seleccionar]

int valor1, valor2, valor3, valor4, valor5;
Random numAleatorio;

numAleatorio = new Random();
valor1 = numAleatorio.Next(0, 9);
//numAleatorio2 = new Random();
valor2 = numAleatorio.Next(0, 9);
//numAleatorio3 = new Random();
valor3 = numAleatorio.Next(0, 9);
//numAleatorio4 = new Random();
valor4 = numAleatorio.Next(0, 9);
//numAleatorio5 = new Random();
valor5 = numAleatorio.Next(0, 9);


Debido a ese error, la fuerza bruta se hace mas que sencilla, pues solo deberemos probar 10 combinaciones idénticas en los controles hasta dar con la correcta, y ya que recortas la cantidad de intentos a 10, pues en el peor de los casos (valores 9-9-9-9-9), lo solucionaríamos en el ultimo intento :P

Resumiendo, debes pensar bien cuando desees hacer un sistema de registro, el algoritmo o método que utilizas, pues al final puede que crees algo "inviable". Todo repito, con buen rollo, no te tomes a mal las criticas  :rolleyes:
Igual en este caso, aun si se quiere una solución al reto, solo puede crearse un selfkey, no hay mas opciones. En mi caso dejo una versión parchada de tu binario
Saludos y espero que sigas practicando

http://www.mediafire.com/download/2m4edpk8sv88h99/SafeBox_Crackme.SelfKey.rar
-[ "...I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/

sadfud

Noo, para nada me tomo a mal las criticas, todo lo contrario jaja
La verdad que el fallo en el codigo ha sido una mancada, eso me pasa por no comprobar el funcionamiento completo :$
La soluciion para esto que habia pensado en un principio era usar el olly o cualquier debugger y cada vez que se hiciese un intento ver que valores habia comparado el programa y asi se sabrian los valores aleatorios.

Un saludo a ambos!!

ThunderCls

Cita de: sadfud en  7 Mayo 2016, 21:55 PM
La verdad que el fallo en el codigo ha sido una mancada, eso me pasa por no comprobar el funcionamiento completo :$

Hombre eso sí, no te vendría mal depurar antes de liberar jeje, pero igual no te tienes q complicar tanto la vida, VS tiene depurador integrado  ;D
-[ "...I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/