Páginas

anun1

miércoles, 2 de septiembre de 2026

Generador De Claves Del Crackme 2 de tHE ANALYST

Hola amigos hoy les traigo el crackme número 2 de ANALYST por si no lo vieron la solución de el crackme 1 aquí les dejo el link


Este reto es un poco más complicado que el primero por eso me tarde en traer la solución, bueno lo abrimos con el x32dbg y buscamos en los string el mensaje correcto y lo encontramos este



Ahora damos doble clic y nos manda a esta zona


Como podemos ver hay esta la API de comparación hay podemos ver con que compara nuestro serial si ponemos un breakpoint y más arriba se encuentra la generación del serial aquí les pego el código en ensamblador

004010F7 | 33D2                     | xor edx,edx                                    | edx:EntryPoint
004010F9 | 33DB                     | xor ebx,ebx                                    |
004010FB | 8B55 D4                  | mov edx,dword ptr ss:[ebp-2C]                  | edx:EntryPoint
004010FE | 0155 C4                  | add dword ptr ss:[ebp-3C],edx                  | edx:EntryPoint
00401101 | 0155 C4                  | add dword ptr ss:[ebp-3C],edx                  | edx:EntryPoint
00401104 | 8BC2                     | mov eax,edx                                    | edx:EntryPoint
00401106 | 83C0 05                  | add eax,5                                      |
00401109 | 8945 B8                  | mov dword ptr ss:[ebp-48],eax                  |
0040110C | 33C0                     | xor eax,eax                                    |
0040110E | 8BCF                     | mov ecx,edi                                    | ecx:EntryPoint, edi:EntryPoint
00401110 | 83C1 04                  | add ecx,4                                      | ecx:EntryPoint
00401113 | 894D B4                  | mov dword ptr ss:[ebp-4C],ecx                  | ecx:EntryPoint
00401116 | 33C9                     | xor ecx,ecx                                    | ecx:EntryPoint
00401118 | 0155 BC                  | add dword ptr ss:[ebp-44],edx                  | edx:EntryPoint
0040111B | 017D BC                  | add dword ptr ss:[ebp-44],edi                  | edi:EntryPoint
0040111E | 6BFF 03                  | imul edi,edi,3                                 | edi:EntryPoint
00401121 | 897D C0                  | mov dword ptr ss:[ebp-40],edi                  | edi:EntryPoint
00401124 | 33FF                     | xor edi,edi                                    | edi:EntryPoint
00401126 | 0FBE8C05 44FFFFFF        | movsx ecx,byte ptr ss:[ebp+eax-BC]             | ecx:EntryPoint
0040112E | 83F9 61                  | cmp ecx,61                                     | ecx:EntryPoint, 61:'a'
00401131 | 7C 07                    | jl k4n2.40113A                                 |
00401133 | 90                       | nop                                            |
00401134 | 90                       | nop                                            |
00401135 | 90                       | nop                                            |
00401136 | 90                       | nop                                            |
00401137 | 83E9 20                  | sub ecx,20                                     | ecx:EntryPoint
0040113A | 8BF1                     | mov esi,ecx                                    | esi:EntryPoint, ecx:EntryPoint
0040113C | 03DE                     | add ebx,esi                                    | esi:EntryPoint
0040113E | 0FAFD9                   | imul ebx,ecx                                   | ecx:EntryPoint
00401141 | 4A                       | dec edx                                        | edx:EntryPoint
00401142 | 0FBE8C2F 44FFFFFF        | movsx ecx,byte ptr ds:[edi+ebp-BC]             | ecx:EntryPoint
0040114A | 0FBEB42F 45FFFFFF        | movsx esi,byte ptr ds:[edi+ebp-BB]             | esi:EntryPoint
00401152 | 83F9 61                  | cmp ecx,61                                     | ecx:EntryPoint, 61:'a'
00401155 | 7D 12                    | jge k4n2.401169                                |
00401157 | 90                       | nop                                            |
00401158 | 90                       | nop                                            |
00401159 | 90                       | nop                                            |
0040115A | 90                       | nop                                            |
0040115B | 83FE 61                  | cmp esi,61                                     | esi:EntryPoint, 61:'a'
0040115E | 7D 0E                    | jge k4n2.40116E                                |
00401160 | 90                       | nop                                            |
00401161 | 90                       | nop                                            |
00401162 | 90                       | nop                                            |
00401163 | 90                       | nop                                            |
00401164 | EB 0B                    | jmp k4n2.401171                                |
00401166 | 90                       | nop                                            |
00401167 | 90                       | nop                                            |
00401168 | 90                       | nop                                            |
00401169 | 83E9 20                  | sub ecx,20                                     | ecx:EntryPoint
0040116C | EB ED                    | jmp k4n2.40115B                                |
0040116E | 83EE 20                  | sub esi,20                                     | esi:EntryPoint
00401171 | 47                       | inc edi                                        | edi:EntryPoint
00401172 | 03DE                     | add ebx,esi                                    | esi:EntryPoint
00401174 | 0FAFD9                   | imul ebx,ecx                                   | ecx:EntryPoint
00401177 | 4A                       | dec edx                                        | edx:EntryPoint
00401178 | 75 C8                    | jne k4n2.401142                                |
0040117A | 895D C8                  | mov dword ptr ss:[ebp-38],ebx                  |
0040117D | 33C9                     | xor ecx,ecx                                    | ecx:EntryPoint
0040117F | 33D2                     | xor edx,edx                                    | edx:EntryPoint
00401181 | 33DB                     | xor ebx,ebx                                    |
00401183 | 33C0                     | xor eax,eax                                    |
00401185 | 837D D4 32               | cmp dword ptr ss:[ebp-2C],32                   | 32:'2'
00401189 | 0F8D A0000000            | jge k4n2.40122F                                |
0040118F | 0FBE840D 44FFFFFF        | movsx eax,byte ptr ss:[ebp+ecx-BC]             |
00401197 | 03C1                     | add eax,ecx                                    | ecx:EntryPoint
00401199 | 03D8                     | add ebx,eax                                    |
0040119B | 41                       | inc ecx                                        | ecx:EntryPoint
0040119C | 3B4D D4                  | cmp ecx,dword ptr ss:[ebp-2C]                  | ecx:EntryPoint
0040119F | 75 EE                    | jne k4n2.40118F                                |
004011A1 | D1C0                     | rol eax,1                                      |
004011A3 | 35 40E20100              | xor eax,1E240                                  | 1E240:"???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
004011A8 | 8945 B0                  | mov dword ptr ss:[ebp-50],eax                  |
004011AB | 33C9                     | xor ecx,ecx                                    | ecx:EntryPoint
004011AD | 33D2                     | xor edx,edx                                    | edx:EntryPoint
004011AF | 33DB                     | xor ebx,ebx                                    |
004011B1 | 33C0                     | xor eax,eax                                    |
004011B3 | 0FBE840D 44FFFFFF        | movsx eax,byte ptr ss:[ebp+ecx-BC]             |
004011BB | 6BD0 06                  | imul edx,eax,6                                 | edx:EntryPoint
004011BE | 33C2                     | xor eax,edx                                    | edx:EntryPoint
004011C0 | 03D8                     | add ebx,eax                                    |
004011C2 | 41                       | inc ecx                                        | ecx:EntryPoint
004011C3 | 3B4D D4                  | cmp ecx,dword ptr ss:[ebp-2C]                  | ecx:EntryPoint
004011C6 | 75 EB                    | jne k4n2.4011B3                                |
004011C8 | 035D B0                  | add ebx,dword ptr ss:[ebp-50]                  |
004011CB | 895D AC                  | mov dword ptr ss:[ebp-54],ebx                  |

Es algo extenso la generación del serial así que solo les traeré el generador de claves, así que aquí el código de mi keygen

<html>
<head>
<title>Keygen Crackme 2 tHE ANALYST  ...:::Flamer:::...</title>
</head>
<body bgcolor="black">
<center>
<marquee style="font-size:30;color:yellow;">Generador De Claves Crackme 2 tHE ANALYST ...:::By Flamer:::...</marquee><br><br>
<label style="color:white;">Nombre:</label>
<input type="text" id="nom" size='75' style="background-color:Gray;color:white;text-align:center;">
<input type="button" value="Copy" onclick="copiar1()"><br><br>
<label style="color:white;">Serial:</label>
<input type="text" id="pass" size='90' style="background-color:Gray;color:white;text-align:center;">
<input type="button" value="Copy" onclick="copiar2()"><br><br>

<input type="button"  value="Generar" onclick="manual()" id="boton1">
<input type="button"  value="Automatico" onclick="auto()" id="boton2">
<input type="button"  value="Limpiar" onclick="limpia()" id="boton3">
</center>
<script>
let tiempo;
function copiar1() 
{
   let c=document.getElementById('nom'); 
   navigator.clipboard.writeText(c.value);
}
//==================================================================================
function copiar2() 
{
   let c=document.getElementById('pass'); 
   navigator.clipboard.writeText(c.value);
}
//==================================================================================
function limpia()
{
   document.getElementById("nom").value="";
   document.getElementById("pass").value="";
}
//==================================================================================
function corre()
{
   let cadena="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
   let l=cadena.length-1
   let largo=parseInt(Math.random() * (l - 4) + 4);
   let x,posi,nick="";
   
   for(x=0;x<largo;x++)
   {
      posi=parseInt(Math.random() * (l - 0) + 0);
      nick+=cadena[posi];
	  
   }
   document.getElementById("nom").value=nick;
   document.getElementById("pass").value=genera(nick); 
   
   tiempo=setTimeout("corre()",10);
}
//==================================================================================
function auto()
{
   if(document.getElementById("boton2").value=="Automatico")
   {
      document.getElementById("boton2").value="Detener";
      document.getElementById("boton1").disabled = true;
      document.getElementById("boton3").disabled = true;
      corre();
   }
   else 
   {
      document.getElementById("boton2").value="Automatico";
      document.getElementById("boton1").disabled = false;
      document.getElementById("boton3").disabled = false;
     clearTimeout(tiempo);
   }
}
//==================================================================================
function genera(nombre)
{
   let parte1=nombre.length * 2;
   let parte2=nombre.length + 5;
   let parte3="1AF254";
   let parte4=(1765968*3).toString(16);
   let edi=0,ebx=0,esi=0,ecx=0,txt="",edx=nombre.length;
   let nom=nombre;
   let parte8=1765968+ nom.length;
   nombre=nombre.toUpperCase();
   
   ecx=nombre[edi].charCodeAt(0);
   esi=ecx;
   ebx=ebx+esi;
   ebx=ebx*ecx;
   edx--;
   while(edx>0)
   {
      ecx=nombre[edi].charCodeAt(0);
      esi=nombre[edi+1].charCodeAt(0);
      edi++;
      ebx=ebx+esi;
      ebx=ebx*ecx;
      txt=ebx.toString(16);
      txt=txt.slice(-8);
      ebx=parseInt(txt,16);
      edx--;
   }
   
   let parte5=ebx;
   
   eax=nom[nom.length-1].charCodeAt(0);
   eax=eax + nom.length-1;
   txt=eax.toString(2);
   txt=txt + "0";
   eax=parseInt(txt,2);
   let parte6=eax ^ 123456;
   
   ebx=0;
   for(ecx=0;ecx<nom.length;ecx++)
   {
      eax=nom[ecx].charCodeAt(0);
      edx=eax*6;
      eax=eax ^ edx;
      ebx=ebx+eax;
   }
   let parte7=ebx + parte6;
   
   return (parte6.toString(16) + parte7.toString() + "-" + parte2.toString() + parte3 + "-" +  + parte5.toString() + parte8.toString() + "-" + parte1.toString(16) + parte4.toString(16)).toUpperCase();
}
//==================================================================================
function manual()
{
   let nom=document.getElementById("nom").value;
   if(nom.length>3 && nom.length<50)
   {
      document.getElementById("pass").value=genera(nom);
   }
   else
   {
      alert("Error Nombre Muy Corto o Muy Largo, De 4 a 49 Digitos...");  ///menor a 50
   }
}
</script>
</body>
</html>

Así que lo copeamos y pegamos en el bloc de notas y lo aguardamos como "key.html" y aprobar aquí una foto



Ahora probamos la clave en el crackme y nos manda este cartelito


Bueno espero les guste y perdonen por no explicar nada de la generación del serial, pero serial algo extenso y seme hizo más fácil solo subir la solución...Bueno saludos Flamer