Páginas

anun1

sábado, 22 de agosto de 2026

Solucion Al Crackme Threadhell Crackme De Nyan

Hola amigos hoy veremos como resolver el crackme de Nyan que fue publicado en el grupo de CrackSLatinoS al cual le mando un saludo y por publicar este reto...bueno empesemos primero lo analizamos con el ExeInfo PE y a ver que nos dice


y vemos que está programado en Golang un lenguaje que no había escuchado y Google nos dice esto


también no dice que es un ejecutable de 64 bits así que lo abrimos con x64dbg y buscamos los string a ver que nos dice, a ver si encontramos el mensaje correcto o el incorrecto y vemos lo siguiente.


Es mucha basura está claro que aquí no vamos a encontrar nada y como dice Nyan ese es el objetivo que no encuentres como resolverlo... Bueno así que lo ejecutamos y al ingresar alguna contraseña y presionar enter vemos que se cierra de repente no se pausa y eso es por los hilos... Si queremos saber cuantos hilos tiene no vamos a la pantalla de hilos y vemos lo siguiente


Si los detenemos no nos deja trabajar bien... así que por hay no es, bueno se me acaban las opciones así que se me ocurre algo la API que cierra el programa y nos vamos a los módulos donde están las APIs y encontramos la API ExitProcess esta


Si se preguntan que vamos a hacer con esa API, les cuento vamos a seguir el camino que sigue el programa para cerrarse o terminar, ya que al presionar enter se cierra, así que damos doble clic en ella y nos manda a esta parte del código


Como vemos nos manda a una parte sin salida, ese pedazo de código se ejecuta con los hilos y cierra el programa... Pero los hilos no nos importan vamos a seguir el camino y averiguar que call manda llamar esa función y para eso damos clic derecho al push rbp y después clic en encontrar referencias así como en la imagen


Y nos muestra lo siguiente


Como vemos son muchos call que mandan llamar esa función, así que ponemos un breakpoint en cada una y ejecutamos el crackme para después ingresar como contraseña "polomon" y presionamos enter y vemos que se detiene en la siguiente


Vemos que se detiene en una....yo quite los breakpoint para no tener tantos y damos doble clic en ese call y no manda a esta zona


Otra zona que no muestra nada, pero no se apresuren vamos a averiguar de donde mandan llamar esa función...así que primero quitamos el brackpoint para no tener tantos y damos clic derecho en él push rbp y clic en encontrar referencias así como en la imagen


Y nos muestra lo siguiente


Esta vez solo hace referencia a un solo call así que damos doble clic en él a ver donde nos lleva y nos lleva a esta zona


Ahora vamos a dar clic derecho en la comparación(cmp) y después clic en encontrar referencias así como en la imagen


Y nos muestra los siguientes


No vamos a poner breackpoins, damos clic en el primer call y miramos lo siguiente


Como podemos ver hay algunos string que llaman la atención uno de ellos es el que se imprime cuando inicia el programa y otro que no sabemos para qué es... Damos clic en el segundo call y nos muestra el chico bueno o el mensaje correcto


Ese pedazo de código se ejecuta con los hilos y si asemos lo mismo para ver de que parte del código es llamado nos manda a un salto JMP que está abajo... Modificando los saltos podemos imprimir el mensaje correcto, pero ese no es suficiente, tenemos que encontrar el serial y el tercer call no nos lleva a nada así que la opción es el primer call y ponemos un breackpoint en uno de los string así como en la imagen


Nota: en este momento estoy corriendo el crackme no lo cerré por eso me muestra el serial, así que lo cerramos y lo ejecutamos para ver si se detiene donde pusimos el breakpoint....y si se detiene ahora es irnos presionando F8 para ver donde se detiene para que ingresemos el serial y se detiene aquí en este call


así que ponemos un breakpoin en la línea de abajo e ingresamos como serial "polomon" y damos enter y se detiene donde le dijimos al programa


Para revisarlos y echarles una mira dita y no trasearlos con F7 y F8 solo nos ponemos encima de ellos y presionamos enter para ver que contienen o que hacen y nos regresamos con la tecla menos y en uno de ellos vemos que pregunta el número de dígitos del serial y eso lo sé porque ingrese varios seriales distintos con números distintos de dígitos y descubrí que el serial contiene 9 dígitos este es el call


después por casualidad ingrese "123456789" y medio el serial correcto.... Luego mire esa cadena arriba y me dije si pongo "012345678" funcionara algo tiene que ver esa cadena y si funciono después ingrese pedazos de 9 dígitos de esa cadena y funcionaban, no sé porque, pero funcionan así que le hice un keygen tomando pedazos de esa cadena aquí se los dejo

EDITO: El serial solo tiene que tener 9 caracteres pueden ser cualquiera solo con longitud 9 eso lo muestra en la imagen de arriba pero para mas muestra les dejo una imagen entramos en el call ese y yo ingrese como serial "polomon" y vemos que compara la longitud de este serial con 9


                                     

Como vemos compara el largo de la cadena y si es 9 elige un ret y sino el otro

<html>
<head>
<title>Keygen Crackme ThreadHell Crackme Nyan  ...:::Flamer:::...</title>
</head>
<body bgcolor="black">
<center>
<marquee style="font-size:30;color:yellow;">Keygen Crackme El Infierno De Los Hilos Crackme Nyan ...:::By Flamer:::...</marquee><br><br>
<label style="color:white;">Serial:</label>
<input type="text" id="pass" size='50' style="background-color:Gray;color:white;text-align:center;">
<input type="button" value="Copy" onclick="copiar()"><br><br>

<input type="button"  value="Generar" onclick="auto()" id="boton1">
<input type="button"  value="Detener" onclick="stop()" id="boton2" disabled>
<input type="button"  value="Limpiar" onclick="limpia()" id="boton3">
</center>
<script>
let tiempo;
function copiar() 
{
   let c=document.getElementById('pass'); 
   navigator.clipboard.writeText(c.value);
}
//==================================================================================
function limpia()
{
   document.getElementById("nom").value="";
   document.getElementById("pass").value="";
}
//==================================================================================
function auto()
{
   document.getElementById("boton1").disabled = true;
   document.getElementById("boton2").disabled = false;
   genera(); 
   tiempo=setTimeout("auto()",10);
}
//==================================================================================
function stop()
{
   document.getElementById("boton1").disabled = false;
   document.getElementById("boton2").disabled = true;
   clearTimeout(tiempo);
}
//==================================================================================
function genera()
{
   let cadena="[rsp+58]:&" + String.fromCharCode(34) + "Password:0123456789winsymlink/dev/stdinParseFloatcomplex128t.Kind==IsValidSidLogonUserWLockFileExReOpenFileNetUserAddNetUserDelNtOpenFileWSASocketWws2_32.dllvgetrandomnotifyListprofInsertstackLargeNotworkermSpanInUseGOMAXPROCSstoptracedisablethpinvalidptrschedtracesemacquiredebugcall<badpcflushGenMBgoal,cleanups\ns.state=s.base()=heapGoal=GOMEMLIMITKiBnow,pagesatsweepgen=sweepgen,bound=,limit=exitThreadBadvarintGCforced\nrunqueue=stopwait=runqsize=gfreec";
   let largo,posi,pass;
   
   largo=cadena.length-10;
   posi=parseInt(Math.random() * (largo - 0) + 0);
   pass=cadena.substr(posi,9);
   document.getElementById("pass").value=pass;
}
</script>
</body>
</html>

Aquí una foto de él


Así que probamos unos cuantos seriales para probar el keygen y nos muestra esto


Bueno es todo por hoy espero les haya gustado saludo a Neutrino, a Nyan por este crackme y a todos los CrackSLatinoS




No hay comentarios.:

Publicar un comentario