[Reto] Crackme C Yo-Mismo, nivel 1/10 (Principiantes)

Iniciado por cibergolen, 16 Marzo 2015, 16:42 PM

0 Miembros y 3 Visitantes están viendo este tema.

cibergolen

Hacía tiempo que no programaba nada, asique aquí estoy de nuevo

Descripción: Un crackme hecho en C, creado para los más novatos
Dificultad: 1/10
Plataforma: Windows
Lenguaje: C

Enlace de descarga

Código fuente (Solo si lo has resuelto, o te das por vencido)

Happy coding

d00rt

#1
Cita de: cibergolen en 16 Marzo 2015, 16:42 PM
Hacía tiempo que no programaba nada, asique aquí estoy de nuevo

Descripción: Un crackme hecho en C, creado para los más novatos
Dificultad: 1/10
Plataforma: Windows
Lenguaje: C

Enlace de descarga

Código fuente (Solo si lo has resuelto, o te das por vencido)

Happy coding

Hola, llevo una semana aprendiendo el arte del cracking y me he lanzado a por este reto, estoy siguiendo el tutorial de Narvaja, y voy por la lección 14  (esto lo dejo aclarado para que los recién iniciados como yo no tiren la toalla) llevo desde que has subido el problema intentando solucionarlo, he destripado las funciones por las que pasa el serial y el nombre con los que después hace las comprobaciones, el caso es que no se como generar dichos serials, he creado en python un código para que me intente sacar por fuerza bruta los serials pero creo que no me esta dando resultado (aun sigue ejecutando XD).

He hecho un caso de prueba aislado con este serial "1234567" y mi programa de python responde correctamente y concuerda con lo que aparece en el ollydbg para dicho caso.

Dejo el código para ver si alguien me puede hechar una mano ya que creo que la fuerza bruta no es la solución mas correcta.

A el que quiera intentar el reto no le recomiendo mirar el código ya que creo que desvela parte de las cosas que hace el programa y se pueden usar como pista, si alguno me puede echar una mano... lo agradeceria


def sumaAsciiHex(serial):
   suma=0
   i=0
   for caracter in serial:
       if i==0:
           i=1
       else:
           suma=suma+ord(caracter)
   
   return hex(suma)

def XOR32(hexa):
   nHexa=hex(int(hexa,16)^int('0x32',16))
   return (nHexa)

def resta0A(hexa):
   return hex(int(hexa,16) - 10)

def main(name):
   for i in range(9999999,9999999999999):
       resul=sumaAsciiHex(str(i))
       while  int(resul,16)>int('0x64',16):
               xor=XOR32(resul)
               resul=resta0A(xor)
               resulint=int(resul,16)
               char=chr(int(resul,16))
       if char==name[0]:
           print("RESULTADO: ")
           print (i)
           print(char)
           print("///////")


tincopasan

Está bien que subas un crackme para aprender, pero creo sería mejor no pongas el código fuente, hasta que hayan mostrado algún tipo de solución, que podría ser parchar(la más fácil y rápida) o sacar el serial para un usuario y lo más completo generar un keygen más un tute de como resolverlo. La iniciativa a activar los conocimientos siempre será bien recibida. Saludos.

Flamer

#3
Cita de: tincopasan en 16 Marzo 2015, 22:09 PM
Está bien que subas un crackme para aprender, pero creo sería mejor no pongas el código fuente, hasta que hayan mostrado algún tipo de solución, que podría ser parchar(la más fácil y rápida) o sacar el serial para un usuario y lo más completo generar un keygen más un tute de como resolverlo. La iniciativa a activar los conocimientos siempre será bien recibida. Saludos.

y he cierto lo que dise tinco no hay que mostrar el codigo, el chiste es batallar y no que nos den la solucion

Fasil

Usuario:Dlameres
Contraseña:123456789

Saludos Flamer y falta el keygen

cibergolen

Solo di el código por si alguien se rinde, aunque el crackme es relativamente simple

Un saludo, y esperen el siguiente!

tincopasan

#5
El post tuvo muchas vistas ¿y solo hay dos posibles soluciones? Después hay muchos post que dicen ¿cómo puedo hallar el serial? y no intentan hacer un crackme que como dice el autor es para los más novatos. ¿quién puede tener ganas de ayudar a alguien que quiere todo servido?
1) Flamer, no creo que seas novato, pero está muy bien que aportes datos o soluciones.
2)d00rt no es necesaria la fuerza bruta ya que el código se puede reversear.
3) yo soy un novato eterno, mi nivel se mantiene por inútil y sobre todo vago! pero intento aprender.
4) daré un user y serial para que investiguen y aporten soluciones.
  user: Alguien
  pass:32225677
5) quien quiera aprender que practique y lo que no sepa pregunte!
6)cibergolen a)gracias por el trabajo b)insisto que el code lo dejes solo para quien te lo pida, si se rinden, que pregunten!!!!

Edito: quien no sabe casi nada podría intentar parchar que es lo más fácil.

Saludos.

d00rt

tincopasan, la verdad que se cuales son las funciones que se les aplica tanto al nombre como a la pass, pero lo que no se es como conseguir un User y un pass valido para dicho programa o eso a lo que tu te refieres como "reversear", ¿Me lo podrías explicar por aquí o bien por privado para no aportar pistas por aquí? Si de lo que no te fías es de que no sepa en absoluto lo que hace el programa si quieres antes te digo que es lo que yo creo que hace al user y al serial y si estoy en lo correcto me explicas lo otro.

Gracias!!

Flamer

Hola tinco como estas...no abia contestado por falta de tiempo trabajo 8 horas diarias y el keygen no lo e hecho por lo mismo y por otro lado en este mismo momento seme quemo el monitor, sigo teniendo problemas con mi pc pero en fin.

Mi analisis el crackme tiene una rutina(un call) donde pregunta si el serial y el nombre son mayores que 6 osea que se permite de 7 digitos en adelante.

Despues de eso mas adelante se encuentra otro call este es el mas importante ya que es el que genera el serial pero no lo genera fasil mente sino que suma los valores ascii del serial que ingresamos menos el primer digito del serial.
Y despues de esto pasa por un ciclo el cual pregunta si es mayor a 100 y si es le xorea 50 y le resta 10 y saldra del ciclo cuando sea menor a 100 y el resultado que quede sera comparado con el valor ascii de la primera letra del nombre que ingresamos el cual tiene que ser igual

asi que aqui importa la primera letra del nombre y el serial a ingresar.

bueno saludos flamer y no fui espesifico con direciones por que estoy desde mi celular

tincopasan

Flamer:
seguro que encontraste la forma de resolverlo, obvio que también yo, pero no posteo la solución para ver si alguien más lo intenta!.
Saludos

Flamer

el keygen no logre terminarlo por que trono el monitor y me quede sin pc pero quedo empesado y pues cuando compre el nuevo se los muestro aun que dejame desirte que si esta de quebrarse la cabesa un rato para lograr el keygen para mi no esta sencillo por eso te digo que soy nobato...

Saludos Flamer y si entiendo su funcionamiento y si te garantiso que logro el keygen pero tendria que pensar un rato ajajajajaaja