jueves, 10 de septiembre de 2026
Solucion Generador De Claves Crackme CKG_002 de Cokeing
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
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 |
<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>



















