Páginas

anun1

jueves, 10 de septiembre de 2026

Solucion Generador De Claves Crackme CKG_002 de Cokeing

Hola amigos hoy les traigo el generador de claves del crackme del usuario Cokeing es algo sencillo de resolver, pero así es como aprende uno con lo básico aquí una foto del reto


Como vemos pide 2 datos nick y nick transformado, bueno ahora lo abrimos con el x32dbg y primeramente vemos los string o cadenas de texto y nos muestra esto, así que damos doble clic en él


Y continuación nos muestra esto, como ven dimos en el blanco



Así que ponemos un breakpoint en la línea 00401374 y pondré como nick "polon" y en el siguiente campo "123456"

Como vemos convirtió el nick a mayúsculas y toma dígito por dígito del nick y le suma el valor de F que en decimal es 15...así que me fui hasta la línea 004013C9 y mire con que valor compara y mire lo siguiente


Bueno ahora ya saben como se genera el serial así que les dejaré un generador de claves en HTML y JavaScript... Otra cosa como máximo el crackme solo acepta nick de 14 dígitos, aquí el código
<html>
<head>
<title>Keygen Crackme CKG_002 de Cokeing  ...:::Flamer:::...</title>
</head>
<body bgcolor="black">
<center>
<marquee style="font-size:30;color:yellow;">Generador De Claves Crackme CKG_002 de Cokeing ...:::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 largo=parseInt(Math.random() * (14 - 1) + 1);
   let x,posi,nick="";
   
   for(x=0;x<largo;x++)
   {
      posi=parseInt(Math.random() * ((cadena.length-1) - 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 x,digi,clave="";
   nombre=nombre.toUpperCase();
   for(x=0;x<nombre.length;x++)
   {
      digi=nombre[x].charCodeAt(0);
      digi=digi + 15;
      clave+=String.fromCharCode(digi);
   }
   
   return clave;
}
//==================================================================================
function manual()
{
   let nom=document.getElementById("nom").value;
   if(nom.length>0 && nom.length<=14)
   {
      document.getElementById("pass").value=genera(nom);
   }
   else
   {
      alert("Error El Campo Nombre Esta Vasio o Superastes El Limite...");
   }
}
</script>
</body>
</html>

Así que lo probé y me muestra esto


Bueno espero les haya gustados saludos Flamer

sábado, 5 de septiembre de 2026

Solucion al Crackme 2 De Enigmagroup

Hola amigos hoy veremos la solución del crackme 2 de la página Enigmagroup, vamos a ver si los resolvemos todos los retos, me pondré a resolverlos y a presentar sus soluciones, ya que la página desapareció por completo y el dominio está ocupado por otras personas y por otra parte su creador Chris o mejor llamado Psychomarine murió hace ya 3 años y nos dejó estos crackmes como su legado, bueno empecemos.

Este es el reto y al poner el mause en el botón Submit se desactiva y al ponerlo en cancelar se vuelve a activar pero esto no nos deja hacerle clic aquí una foto


Lo abrimos con el x32dbg y le ponemos esto en el CommandBar o barra de comandos "bp EnableWindow"


Y presionamos enter ahora se detendrá en la API que desactiva el botón y activa..., ya que se detenga solo nos vamos presionando F8 y hasta llegar de nuevo desamblado del crackme,  para que no se pierdan tienen que llegar al CALL que activa el botón, lo aclaro porque está otro CALL que en este no se pueden hacer nada y como pusimos un breackpoint en la API se detendrá así que si llegan a esa zona no hagan nada no tiene caso, buscamos otro CALL no ese


Solo al ejecutarlo si se detiene en la API Enablewindow déjenlo correr y pongan el ratón en el botón submit y se detendrá eso los mandara al CALL correcto que es este el de la dirección 004036D2


Vemos que el registro EBX está en 1 así que modificaremos la línea 

004036CE | 57                       | push edi                                

por 

004036CE | 53                       | push ebx                                     

Y guardamos los cambios y llamamos al nuevo archivo "App2_Activado.exe" y vemos que el nuevo archivo no se desactiva el botón... Bueno ahora pasamos a encontrar el serial, así que ponemos un breakpoint en la dirección

00403209 | FF15 54104000            | call dword ptr ds:[<__vbaVarTstEq>]            |

Y ejecutamos y ponemos como contraseña "123456" y  nos vamos traseando con F7 ese CALL y vemos que compara el serial ingresado con "TOPGUN"


Asi que ingresamos ese serial como nombre para ver que nos arroja y como vemos nos arroja el cartelito correcto


Bueno les dejaré un código en JavaScript para activar el botón, solo funciona con este crackme no con otros

<html>
<head>
<title>Activar Boton</title>
</head>
<body>
<br><br>
<center>
<input type="file" id="archivo"><br><br>
<input type="button" value="Activar" onclick="activa()">
</center>
<script>
async function activa()
{
    // Obtener el objeto File
    const input = document.getElementById("archivo");
    const archivo = input.files[0];

    if (!archivo)
    {
        alert("Selecciona un archivo");
        return;
    }

    // Leer archivo como ArrayBuffer
    const buffer = await archivo.arrayBuffer();

    // Convertirlo a Uint8Array
    const datos = new Uint8Array(buffer);

    // Comprobar que exista la posición
    if (datos.length <= 14030)
    {
        alert("El archivo es demasiado pequeño");
        return;
    }

    // Mostrar byte original
    alert("Original: 0x" + datos[14030].toString(16).padStart(2, "0"));

    // Modificar byte
    datos[14030] = 0x53;

    // Mostrar nuevo byte
    alert("Nuevo: 0x" + datos[14030].toString(16).padStart(2, "0"));

    // Crear archivo modificado
    const nuevoArchivo = new Blob([datos], {
        type: "application/octet-stream"
    });

    // Descargar
    const enlace = document.createElement("a");

    enlace.href = URL.createObjectURL(nuevoArchivo);
    enlace.download = "App2_Activado.exe";

    enlace.click();

    // Liberar URL
    URL.revokeObjectURL(enlace.href);
}
</script>
</body>
</html>

Aqui una foto


Si les aparece este cartelito al ejecutar el nuevo archivo descargado


Solo ceban a propiedades y palomean la opción desbloquear y aplicar cambios...Nota: esto solo es para el reto este no para otros archivos que desconoscan, ya que podrían correr peligro


Bueno creo que eso es todo saludos y espero les haya gustado Flamer


miércoles, 2 de septiembre de 2026

Solucion 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,aqui una foto de el reto





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