Páginas

anun1

viernes, 3 de julio de 2026

Solucion al Crackme 3 De Cruehead By Flamer

Hola amigos hoy veremos como resolver el crackme 3 de cruehead este es el último de la serie y está más complejo que los anteriores, pero no es la gran cosa se puede reversear, se puede solucionar.

Bueno empecemos este crackme o reto lee un archivo llamado "CRACKME3.KEY" y no es un TXT, sino un archivo con la extensión KEY, en fin este archivo tiene que tener la clave la cual se conforma de 18 dígitos y esta clave es leída cuando se está cargando el crackme y si el crackme corrió y no mostro nada quiere decir que la clave no era la correcta o no tenía los 18 dígitos en fin esta es una foto del reto.


Lo que hace el código de este reto es buscar el archivo antes mencionado en la misma ubicación o misma carpeta donde este el crackme para leerlo y mostrar el cartelito correcto si la clave es la correcta y si no lo es no muestra nada.

Bueno aquí el código en JavaScript y HTML de generación de la clave correcta o mejor dicho el generador del archivo de verificación

<head>
<title>Generador de Claves</title>
</head>
<body bgcolor="black">
<marquee style="color:white;font-size:30;">Keygen Crackme3 Cruehead By ...:::Flamer:::...</marquee><br><br>
<center>
<br><br>
<input type="button" value="Generar Archivo Key" onclick="generator()" style="background-color:Gray;color: white;font-size: 16px;font-size: 50px;border-radius: 10px;border: 2px solid Lime;">
</center>
<script>
function generator()
{
   let fso,x,digi,xo=65,suma=0,pass="";
   let cadena="OPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
   let largo=cadena.length;
   let bytesPuros = new Uint8Array(18);
    
   for(x=0;x<14;x++)
   {
     digi=parseInt(Math.random() * (largo-0)+0);
     pass+=cadena[digi];
     bytesPuros[x]=cadena[digi].charCodeAt(0);
   }
   
   for(x=0;x<14;x++)
   {
      digi=pass[x].charCodeAt(0);
      digi=digi ^ xo;
      suma+=digi;
      xo++;
   }
   
   suma=suma ^ 305419896;
   cadena=suma.toString(16);
   largo=14;
   
   for(x=6;x>=0;x-=2)
   {
      digi=cadena.substr(x,2);
      bytesPuros[largo] = parseInt(digi,16);
      largo++;   
   }
 
   const blob = new Blob([bytesPuros], { type: 'application/octet-stream' });
   const enlace = document.createElement('a');
   enlace.href = URL.createObjectURL(blob);
   enlace.download = 'CRACKME3.KEY'; 
   enlace.click();
   URL.revokeObjectURL(enlace.href);   
}
</script>
</body>
</html>

Aqui una foto del generador de claves


Si lo quieren probar el codigo ya saben copean el código y pegan en el bloc de notas y aguardan como genera.html y listo después al ejecutarlo solo cliquean en el botón Generar archivo key esto les dará el archivo a aguardar

Ahora lo explicaré brevemente primero creamos una variable llamada cadena la cual contiene los dígitos que contendrá la contraseña del archivo de verificación, sise fijan empieza desde O mayúscula porque la variable con la que xorearemos será la variable xo y esta empieza desde A y si la clave del archivo empieza desde A y la variable xo también desde A al xorear esta nos dará 0 y eso nos saca del código de generación del serial es por eso que la variable cadena empieza desde O para que el serial no contenga esos caracteres.

Bueno seguimos el primer ciclo crea los primeros 14 dígitos al azar y los almacena en la variable pass y también en la variable bytesPuros pero su valor ASCII

el segundo for toma los 14 dígitos del serial creado al azar en el for anterior y que fueron guardados en la variable pass y son convertidos en su valor ASCII y luego los xorea con la variable xo para después el resultado es sumado y guardado en la variable suma...Nota: esta variable xo aumenta en 1 en cada vuelta si era 65 a la siguiente será 66 y así

después que sale del ciclo el resultado de suma es xoreado con el numero 305419896, para después ser convertido en hexadecimal y aguardado en la variable cadena y el siguiente for toma el resultado que fue guardado en la variable cadena y empieza a tomar los bytes desde el reverso hasta el primer byte... Estos bytes se concatenan con los 14 primeros y como son 4 más 14 son 18 y son los que se aguardan en el archivo KEY

aquí una foto del crackme resuelto

Y aquí una foto del contenido del archivo KEY... Nota: no modifiquen el contenido del archivo, ya que son bytes y si los modifican puede que no funcione



Bueno creo que eso es todo y terminamos con la serie de crackmes de cruehead saludos Flamer


Solucion Del Crackme 2 De Cruehead Por Flamer

Hola amigos hoy veremos el crackme 2 de cruehead es algo muy simple así que este tutorial no será tan extenso bueno empecemos este es el reto


Ahora si solo ingresamos 1 digito sea número, letra mayúscula o minúscula nos arroja este mensaje, así que yo ingreso la letra "a" y esto me muestra


Y listo el reto asido resuelto jajajaja... Bueno eso no es todo ojalá y fuera eso, pero el crackme tiene más y es una palabra que tenemos que encontrar.

Este reto tiene la API GetDlgItemTextA en la dirección 004012C2 que es la encargada de recoger lo que ingresamos.

Asi que ingresamos un serial y este es xoreado con la cadena "Messing_in_bytes" en la línea 004013A9 que en su valor hexadecimal es la siguiente 

4D 65 73 73 69 6E 67 5F 69 6E 5F 62 79 74 65 73    

El resultado tiene que ser igual a lo siguiente en su valor hexadecimal....Nota lo puse en su valor hexadecimal porque tiene caracteres raros

1F 2C 37 36 3B 3D 28 19 3D 26 1A 31 2D 3B 37 3E

Bueno para no ser un programa en javascript y html le pedí ala IA que me los xoreara y esto me dio

ÍndiceCadena 1 (Hex)Cadena 2 (Hex) / ASCIIResultado (Hex)Carácter ASCII
11F4D ('M')52R
22C65 ('e')49I
33773 ('s')44D
43673 ('s')45E
53B69 ('i')52R
63D6E ('n')53S
72867 ('g')4FO
8195F ('_')46F
93D69 ('i')54T
10266E ('n')48H
111A5F ('_')45E
123162 ('b')53S
132D79 ('y')54T
143B74 ('t')4FO
153765 ('e')52R
163E73 ('s')4DM

así que el valor a encontrar es: RIDERSOFTHESTORM

así que ingresamos la palabra clave y el resultado es el siguiente



Bueno creo que eso es todo saludos Flamer

viernes, 26 de junio de 2026

Solucion al Crackme 7 de la pagina Rogerfm.Net

Hola amigos hoy veremos la solución del reto 7 de la página rogerfm.net, este reto hace tiempo lo había resuelto y ahora lo traigo de nuevo.

aquí una foto del reto



Este reto primeramente lee un valor desde el registro, si estas en una máquina de 32 bits el valor de registro será este

HKEY_LOCAL_MACHINE\SOFTWARE\A Challenge for Newbies

y dentro de este la clave REG_SZ llamado password   tenemos que encontrar el valor de esa clave 

y si estás usando una máquina de 64bits la ruta es

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\A Challenge for Newbies 

Con los mismos valores... Bueno la clave a encontrar y que se guarda en el registro en la ruta mencionada anteriormente es de 8 dígitos y se divide en partes.

La primera es que se suma cada dígito por su valor ASCII y el resultado lo multiplica por su posición y el resultado tiene que ser igual a 4684666

Nota: estamos en JavaScript, y este lenguaje lees desde la posición 0 o sea el dígito 0.... Pero en vez de empezar desde el dígito 0 empezaremos desde el dígito 1 o posición 1...

después toma los dígitos  5 y 4 y resta digito 5 - dígitos - 1

después toma los dígitos  4 y 2 y resta digito 4 - digito 2 - 1

después toma los dígitos  2 y 1 y resta digito 2 - digito 1 - 2

después toma los dígitos  1 y 6 y resta digito 1 - digito 6 - 7

después toma los dígitos  6 y 7 y resta digito 6 - digito 7 - 2

después toma los dígitos  7 y 8 y resta digito 7 - digito 8 - 2

después toma los digitos  8 y 3 y resta digito 8 - digito 3 - 0

como pueden ver es por fuerza bruta como el anterior así que yo hice un fuerza bruta, pero ami manera y es calando dígito por dígito y nos va diciendo que tan lejos o que tan cerca andamos y nos muestra el valor ASCII de cada dígito y la resta aquí se los dejo.... Nota: a ver si le entienden o yo solo me entiendo y me da pereza explicarlo

<head><title>Brute Force</title>
</head>
<body>
<br><br><br>
<center>
Solo Letras de (e) Hasta (t)<br><br>
<input type="text" id="clave" maxlength="8" style="width:150;height:40;font-size:25;text-align:center;"><br><br>
<input type="button" value="Manual" onclick="calcular()">
<br><br>
<div id="eti1" style="background:#FA0404;width:500;">Valor a encontrar es 4684666 ----></div><br>
<div id="eti2" style="background:#FA0404;width:500;"></div><br>
<div id="eti3" style="background:#FA0404;width:500;"></div><br>
<div id="eti4" style="background:#FA0404;width:500;"></div><br>
<div id="eti5" style="background:#FA0404;width:500;"></div><br>
<div id="eti6" style="background:#FA0404;width:500;"></div><br>
<div id="eti7" style="background:#FA0404;width:500;"></div><br>
<div id="eti8" style="background:#FA0404;width:500;"></div><br>
</center>
<script>
function calcular()
{
   let pass,x,d1,d2,s,sum=0;

   pass=document.getElementById("clave").value;
   
   if(pass.length==8)
   {
      for(x=7;x>=0;x--)
      {
         digi=pass[x];
	 sum=(sum + digi.charCodeAt(0)) * (x + 1);
      }
      
      document.getElementById("eti1").innerHTML="Valor a encontrar es 4684666 ----> " + sum;
      if(sum==4684666)
      {	  
         document.getElementById("eti1").style.background="#2FF807"; //verde  
      }
      else
      {
         document.getElementById("eti1").style.background="#FA0404"; //rojo
      }
      
      d1 = pass[4];
      d2 = pass[3];
      s  = d1.charCodeAt(0) - d2.charCodeAt(0) - 1;
      document.getElementById("eti2").innerHTML= "digitos 5 y 4_____" + d1 + " - " + d2 + "_____" + d1.charCodeAt(0) + " - " + d2.charCodeAt(0) + " - 1 = " + s + "  igual a cero";   
      if(s == 0)
      {
         document.getElementById("eti2").style.background="#2FF807";  
      }
      else
      {
         document.getElementById("eti2").style.background="#FA0404";
      }
      
      d1 = pass[3];
      d2 = pass[1];
      s  = d1.charCodeAt(0) - d2.charCodeAt(0) - 1;
      document.getElementById("eti3").innerHTML= "digitos 4 y 2_____" + d1 + " - " + d2 + "_____" + d1.charCodeAt(0) + " - " + d2.charCodeAt(0) + " - 1 = " + s + "  igual a cero";  
      if(s == 0)
      {
         document.getElementById("eti3").style.background="#2FF807";  
      }
      else
      {
         document.getElementById("eti3").style.background="#FA0404";
      }      
      
      d1 = pass[1];
      d2 = pass[0];
      s  = d1.charCodeAt(0) - d2.charCodeAt(0) - 2;
      document.getElementById("eti4").innerHTML= "digitos 2 y 1_____" + d1 + " - " + d2 + "_____" + d1.charCodeAt(0) + " - " + d2.charCodeAt(0) + " - 2 = " + s + "  igual a cero";  
      if(s == 0)
      {
         document.getElementById("eti4").style.background="#2FF807";  
      }
      else
      {
         document.getElementById("eti4").style.background="#FA0404";
      }
	  
      d1 = pass[0];
      d2 = pass[5];
      s  = d1.charCodeAt(0) - d2.charCodeAt(0) - 7;
      document.getElementById("eti5").innerHTML= "digitos 1 y 6_____" + d1 + " - " + d2 + "_____" + d1.charCodeAt(0) + " - " + d2.charCodeAt(0) + " - 7 = " + s + "  igual a cero"; 
      if(s == 0)
      {
         document.getElementById("eti5").style.background="#2FF807";  
      }
      else
      {
         document.getElementById("eti5").style.background="#FA0404";
      }
	  
      d1 = pass[5];
      d2 = pass[6];
      s  = d1.charCodeAt(0) - d2.charCodeAt(0) - 2;
      document.getElementById("eti6").innerHTML= "digitos 6 y 7_____" + d1 + " - " + d2 + "_____" + d1.charCodeAt(0) + " - " + d2.charCodeAt(0) + " - 2 = " + s + "  igual a cero";  
      if(s == 0)
      {
         document.getElementById("eti6").style.background="#2FF807";  
      }
      else
      {
         document.getElementById("eti6").style.background="#FA0404";
      }
	  
      d1 = pass[6];
      d2 = pass[7];
      s  = d1.charCodeAt(0) - d2.charCodeAt(0) - 2
      document.getElementById("eti7").innerHTML= "digitos 7 y 8_____" + d1 + " - " + d2 + "_____" + d1.charCodeAt(0) + " - " + d2.charCodeAt(0) + " - 2 = " + s + "  igual a cero";  
      if(s == 0)
      {
         document.getElementById("eti7").style.background="#2FF807";  
      }
      else
      {
         document.getElementById("eti7").style.background="#FA0404";
      }
	  
      d1 = pass[7];
      d2 = pass[2];
      s  = d1.charCodeAt(0) - d2.charCodeAt(0)
      document.getElementById("eti8").innerHTML= "digitos 8 y 3_____" + d1 + " - " + d2 + "_____" + d1.charCodeAt(0) + " - " + d2.charCodeAt(0) + " = " + s + "  igual a cero";  
      if(s == 0)
      {
         document.getElementById("eti8").style.background="#2FF807";  
      }
      else
      {
         document.getElementById("eti8").style.background="#FA0404";
      }
   }
}
</script>
</body>
</html>

aquí les dejo una foto

Así que ingresamos 8 dígitos y damos clic al botón y vamos calando letra por letra y hay nos muestra que dígitos está comparando y con cuanto nos hemos pasado en su valor negativo o positivo y cuando le atines se pondrá en verde

El valor que encontraremos sera prestige y verificamos en el programa de fuerza bruta 


ahora lo aguardamos en el registro


Como nos sigue marcando error y no muestra el cartelito correcto así que ingresamos el valor 12345678 en el cuadro de texto y vemos que es comparado los primeros 4 dígitos por 61736964 y después los otros 4 por 72657473 así que juntamos los números así  72657473  61736964 y nos vamos a una página para pasarlos de hexadecimal a texto y nos da esto


Como vemos nos da la palabra retsasid, pero la voltearemos porque el depurador x64dbg los lee al revés y nos queda la palabra disaster

luego ingresamos ese valor al crackme y nos arroja esto


Bueno creo que eso es todo espero les guste saludos Flamer