Páginas

anun1

martes, 11 de agosto de 2026

Solucion al Crackme de Mek En Delphi

Hola amigos hoy veremos la solución del crackme de Mek y si se preguntan quien es Mek era un forero del foro el hacker.net también llamado Señor Patata así lo mienta rojodos en un hilo del foro, su crackme lo encontré en dicho foro y esta fácil de resolver y entretenido bueno para pasar el rato, bueno empecemos aquí una foto del reto.

Para empezar el campo nombre debe contener 10 dígitos o más, si contiene menos nos saca del programa.

Ahora aquí es donde está el chico bueno o mejor dicho el corazón del crackme donde hace la magia

00408408 | 8B55 FC                  | mov edx,dword ptr ss:[ebp-4]               | [ebp-04]:"polokolomes"
0040840B | 0FB6541A FF              | movzx edx,byte ptr ds:[edx+ebx-1]          |
00408410 | 33C2                     | xor eax,edx                                |
00408412 | 03C3                     | add eax,ebx                                |
00408414 | 50                       | push eax                                   |
00408415 | 8D45 FC                  | lea eax,dword ptr ss:[ebp-4]               | [ebp-04]:"polokolomes"

Lo que hace es tomar dígito por dígito del campo nombre (que tiene que ser mayor a 10 dígitos) lo xorea con la longitud del campo nombre y después le suma la posición del dígito si es el 1 o 2 o 3 según en la vuelta que vaya y con longitud del nombre me refiero a el número de dígitos del campo en este caso "polokolomes" tiene 11 dígitos de longitud.

Bueno aquí les dejo una foto del generador de claves


aqui el codigo por si lo quieren probar

<html>
<head>
<title>Keygen</title>
</head>
<body bgcolor="black">
<marquee style="color:white;font-size:30;">Generador De Claves Del Crackme De MEK En Delphi  ...:::By Flamer:::...</marquee><br>
<br><br>
<center>
<input type="text" id="nombre" placeholder="Entrada" size="50px" style="background-color:DarkSlateGray;color:white;text-align:center;">
<input type="button" value="Copiar" onclick="copiar1()">
<br><br>
<input type="text" id="pass" placeholder="Salida" size="50px" style="background-color:DarkSlateGray;color:white;text-align:center;">
<input type="button" value="Copiar" onclick="copiar2()">
<br><br>
<input type="button" id="g" value="Generar" onclick="generar()">
<input type="button" id="a" value="Automatico" onclick="autoni()">
<input type="button" id="c" value="Limpiar" onclick="cleare()">
</center> 
<script>
let tiempo;
function copiar1() 
{
   let c=document.getElementById('nombre'); 
   c.select();
   document.execCommand('copy');
}
function copiar2() 
{
   let c=document.getElementById('pass'); 
   c.select();
   document.execCommand('copy');
}
function generar()
{
   let nom = document.getElementById("nombre").value;
   if(nom.length>=10)
   {
      document.getElementById("pass").value=coder(nom);
   }
   else
   {
      alert("Error El Nombre Debe Contener 10 o Mas Digitos Menos No");
   }
}
function cleare()
{
   document.getElementById("nombre").value="";
   document.getElementById("pass").value="";
}
function autoni()
{
   if(document.getElementById("a").value=="Automatico")
   {
      document.getElementById("a").value="Detener";
      document.getElementById("g").disabled=true;	
      document.getElementById("c").disabled=true;	  
      tiempo=setTimeout("auto()",10);	  
   }
   else
   {
      document.getElementById("a").value="Automatico"; 
      document.getElementById("g").disabled=false;	
      document.getElementById("c").disabled=false;	
      clearTimeout(tiempo);
   }
}
function auto()
{
   let cadena = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
   let largo  = cadena.length - 1;
   let x,posi,nom="";
   let lar = Math.floor(Math.random() * (30 - 10 + 1)) + 10;
   
   for(x=0;x<lar;x++)
   {
      posi=Math.floor(Math.random() * (largo - 0 + 1)) + 0;
      nom+=cadena[posi];
   }
   
   document.getElementById("nombre").value=nom;
   document.getElementById("pass").value=coder(nom); 
   
   tiempo=setTimeout("auto()",10);   
}
function coder(nom)
{
   // Tu secuencia hexadecimal original
   let x,codigo="",digi;
   
   for(x=0;x<nom.length;x++)
   {
      digi=nom[x].charCodeAt(0);
      digi=(digi ^ nom.length) + (x+1);
      codigo+=digi.toString(16);
   }
   
// Ejecutar e imprimir el resultado
   let resultado = Texto(codigo);
   return resultado;
}
function Texto(cadenaHex) 
{
    // 1. Tabla completa de caracteres de la página de códigos CP437 (0x00 a 0xFF)
    const Symbols = 
        "\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼" +
        " !\"#$%&'()*+,-./0123456789:;<=>?" +
        "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_" +
        "`abcdefghijklmnopqrstuvwxyz{|}~⌂" +
        "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒ" +
        "áíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐" +
        "└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀" +
        "αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ";

    // 2. Limpiar los espacios en blanco
    const cadenaLimpia = cadenaHex.replace(/\s+/g, '');
    
    // 3. Extraer las parejas hexadecimales
    const parejas = cadenaLimpia.match(/.{1,2}/g);
    if (!parejas) return "";

    // 4. Mapear cada byte con su símbolo correspondiente en la tabla antigua
    let resultado = "";
    for (let i = 0; i < parejas.length; i++)
    {
        const valorDecimal = parseInt(parejas[i], 16);
        // Asegurarnos de que el índice esté dentro del rango de la tabla (0-255)
        if (valorDecimal >= 0 && valorDecimal < 256)
	{
            resultado += Symbols[valorDecimal];
        }
    }
    return resultado;
}
</script>
</body>
</html>

Si me preguntan por qué algo tan sencillo ocupa un programa tan grande es porque para empezar tiene 3 botones el limpiar, el automático y el generar.... El limpiar no ocupa mucho código, pero lo demás si y más ya que el crackme el serial da dígitos raros y si se preguntan eso que tiene que ver pues les explico, no es lo mismo presionar  Alt+1 que imprimir dicho carácter desde un programa... ya que si lo haces desde un programa te da un cuadrito ejemplo:

Si presionó Alt+1 me da esto , pero si lo hago desde un programa pasa esto imagen:


Bueno aqui la imagen del mensaje de correcto



Bueno creo que eso es todo saludos Flamer y hasta la próxima y saludos a todos los CrackSLatinoS [CLS] en especial a Ricardo,Neutrino que acabó de leer su tutorial del crackme 6 de RogerFm.Net, también a apuromafo que me ayudo en algunos crackmes de la página hbh.sh el cual el primero era muy sencillo y no veía la solución por siego jajaja y tambien a tincopasan y a todos los demas de la lista saludos


No hay comentarios.:

Publicar un comentario