Páginas

anun1

martes, 3 de noviembre de 2026

Solucion al Crackme What_do_i_want De Devastator

Hola amigos hoy veremos el crackme de devastador es algo sencillo, pero entretenido bueno para pasar el rato aquí una foto de la víctima


Asi que primero buscamos las string y nos muestra esto


Asi que damos clic en el mensaje well done que quiere decir bien hecho y nos muestra esto


Como podemos ver cuando llegue al mensaje correcto no veo que mande llamar la API MessageBoxA asi que ojo con ese dato no se muestra como cuando se ejecuta el mensaje incorrecto, despues de mostrar el mensaje correcto salta para mandar llamar la API EndDialog que cierra el programa...asi que nos vamos mas arriba para ver que nos muestra y en la linea 004010E0 vemos el salto decisivo, es el que nos manda al cartelito correcto y el incorrecto asi que nos iremos mas arriba en la linea 00401044 y ponemos un breakpoint


Ahora pasaremos a ejecutarlo y pondré lo siguiente


Y se detiene justo donde le indicamos así que nos vamos traceando y vemos que hace una resta en la línea 00401082 resta el valor que ingresamos en el primer cuadro de texto con 200E4


Así que para que EAX valga D  tiene que se 200E4 + D = 200F1  como se mira arriba el número a ingresar tiene que ser 131313 que en hexadecimal es 200F1 asi que lo volvemos ejecutar y seguimos

Nota: yo me guie como arriba en la línea  00401064 está un push que contiene D


Y vemos que unas líneas abajo en la línea 004010B3 xorea la palabra que ingresamos "polonesis" con estos valores

24 0B 15 1C 13 0A 04 36 06 17 2F 64 64


El resultado se aguarda en el dump aquí


Y seguimos traceando y con F8 y en la línea  004010D3 vemos que carga la cadena resultante del xoreo con un PUSH lo carga a la pila creo que lo usara en la API GetProcAddress y si es la correcta no salta en el la instrucción JE y creo que es la API MessageBoxA ya que esa es la que no se mira en el CALL mas abajo en la línea 0040116A y así que para ingresar MessageBoxA lo tenemos que convertir a hexadecimal y luego xorearlos 

MessageBoxA = 4D 65 73 73 61 67 65 42 6F 78 41

XOR

                          24 0B 15 1C 13 0A 04 36 06 17 2F 

--------------------------------------------------------------------------

 information     69 6E 66 6F 72 6D 61 74 69 6F 6E

Y si ingresamos esos valores nos arroja esto


OJO: tiene que ser una API de la librería USER32.DLL y con 11 digitos......yo intente con la API AppendMenuA y si entra no salta en la línea 004010E0, pero no muestra el mensaje, ya que esa API no se encarga de eso

Bueno saludos Flamer

sábado, 31 de octubre de 2026

Solucion Al Crackme de Bocvk

Hola amigos hoy veremos la solución del primer crackme de bocvk, ya publiqué la solución del segundo y tercero, ahora toca al primero y con esto damos por finalizado la serie de estos crackmes de bocvk

Para empezar primero lo abrimos con el x32dbg y buscamos las string



Y como pueden ver hay esta el mensaje correcto y el incorrecto, así que damos doble clic y no envía a esta zona


Como podemos ver hay esta la API GetDlgItemTextA que se encarga de tomar el serial ingresado y más abajo compara con 8, esto quiere decir que el serial tiene que tener 8 dígitos porque si no el salto se cumple así que yo ingresare como serial "12345678" y no se les olvide poner el breakpoint que está en la imagen


Y damos clic al botón OK y se detiene justo donde le indicamos, como el serial tiene 8 dígitos la condición la cumplimos, así que nos vamos traceando hasta la línea 004010B1 que es un CALL y entramos a el presionando F7 y nos muestra el siguiente código

0040114A | 33D2                     | xor edx,edx                                    |
0040114C | 33C9                     | xor ecx,ecx                                    |
0040114E | 8B91 24314000            | mov edx,dword ptr ds:[ecx+403124]              | ecx+403124:"12345678"
00401154 | 83F2 02                  | xor edx,2                                      |
00401157 | 8991 4C314000            | mov dword ptr ds:[ecx+40314C],edx              |
0040115D | 41                       | inc ecx                                        |
0040115E | 3BC8                     | cmp ecx,eax                                    |
00401160 | 74 02                    | je crackme #1.401164                           |
00401162 | EB EA                    | jmp crackme #1.40114E                          |
00401164 | 33D2                     | xor edx,edx                                    |
00401166 | 33C9                     | xor ecx,ecx                                    |
00401168 | 8B91 74314000            | mov edx,dword ptr ds:[ecx+403174]              | ecx+403174:"crackmes"
0040116E | 83C2 03                  | add edx,3                                      |
00401171 | 8991 9C314000            | mov dword ptr ds:[ecx+40319C],edx              |
00401177 | 41                       | inc ecx                                        |
00401178 | 3BC8                     | cmp ecx,eax                                    |
0040117A | 74 02                    | je crackme #1.40117E                           |
0040117C | EB EA                    | jmp crackme #1.401168                          |
0040117E | C3                       | ret                                            |

Como podemos ver si lo tracean lo que hace el primer ciclo xorea cada dígito del serial ingresado con 2  y da como resultado "3016745:" y lo que hace el segundo ciclo es que le suma ala palabra "crackmes" 3 a cada dígito y como resultado de esta suma da "fudfnphv" y salimos del CALL y luego compara en la línea 004010C0


Ahora para revertir esto lo que aremos es copear la palabra "fudfnphv" e ingresarla como serial y la palabra que nos de esa será nuestro serial correcto y nos da la palabra "dwfdlrjt"


Así que ingresamos "dwfdlrjt" y nos arroja esto


Bueno amigo eso es todo espero les haya gustado saludos Flamer y con esto damos por finalizado los crackmes de el usuario bocvk

viernes, 30 de octubre de 2026

Copiar y Descargar el Codigo HTML De Una Pagina Web Ya Cargada

Hola amigos hoy veremos como descargar el código fuente de una página web ya sé que si damos clic derecho y ver código fuente se puede ver y copiar, pero que pasa si lo hacemos así no podemos descargar los elementos que se cargan después eso se puede ver si damos clic derecho y luego en inspeccionar, hay veremos elementos que se cargaron después, me refiero al código DOM (Document Object Model o Modelo de Objetos del Documento)

Para hacer esto seme ocurrió probar este código primero, lo probé en una página de Instagram

const code = document.documentElement.outerHTML;
const a = document.createElement('a');
   a.href = 'data:text/plain;charset=utf-8,' + encodeURIComponent(code);
   a.download = 'pagina.html'; 
   a.click();

Si se descarga pero si aparece esta ventana


Aparece porque yo tengo configurado el navegador así, y si aparece se me pierde el mause... Pero solo doy en enter y se descarga y listo ya tenemos el código completo... Pero ami seme ocurrió otro método y lo cale en la página de Instagram con una ventana de incógnito, para eso nos iremos a Instagram a cualquier perfil y damos clic derecho y luego en inspeccionar



Después nos iremos a la pestaña consola y borramos lo que hay así



Ahora copeamos el siguiente código y lo pegamos en la consola....NOTA: yo estoy desde una ventana de incógnito, no por miedo, sino por mi privacidad... no peguen códigos de desconocidos en la consola si no saben lo que hace, ya que como dice el mensaje pueden ser víctimas de robo de cuenta, seguimos 

const code = document.documentElement.outerHTML; 
document.write('<textarea id="log" style="width:70%; height:400px;"></textarea>');
document.getElementById('log').value = code;

const boton = document.createElement('button');
boton.textContent = 'Copiar El Codigo HTML';
boton.onclick = () => navigator.clipboard.writeText(code);
document.body.appendChild(boton);

Este código ya no descargará el código, lo que hace es crear un cuadro de texto con el código HTML adentro y aparte un botón para copiarlo aquí lo muestro



Solo damos clic en copiar y lo pegamos en el bloc de notas y aguardamos como "pagina.html" y veremos lo siguiente


Como vemos nos muestra las imágenes y lo demás, esto no pasaría si damos clic derecho, ver código fuente y copiar tal código

Bueno eso es todo saludos Flamery podría haberlo hecho en Node.js o Python, pero no mejor preferí hacerlo de forma manual...y otra cosa son cosas simples las que enseño, ya que no soy profesional no me considero uno, soy tan solo un novato que está aprendiendo y publica lo que está aprendiendo

Programa Para Buscar Archivos En Tu Computadora En JavaScript y Node.js

Hola amigos hoy le pedí a chatgpt que me hiciera un programa para buscar un crackme que está en mi pc, ya que me baje el respaldo de "crackmes.de" y el crackme a buscar es el de matalaz, se puede encontrar rápido sin usar el programa solo por el nombre de usuario, ya que están indexados así, pero yo elegí ese para la prueba, para probar el programa.

Bueno empecemos les mostraré el programa primero ya ustedes lo copean y lo pegan en el bloc de notas y lo aguardan como "buscar.js"

// Cargar módulos
const fs = require("fs");
const path = require("path");
const readline = require("readline");

// Configurar entrada y salida de texto
let opciones = {
    input: process.stdin,
    output: process.stdout
};

// Crear interfaz de consola
let rl = readline.createInterface(opciones);

// Variable para guardar la ruta
let carpeta = "";

// Función para buscar archivos en carpetas y subcarpetas
function buscar(dir, nombre)
{
    let archivos;

    // Obtener archivos de la carpeta
    try
    {
        archivos = fs.readdirSync(dir);
    }
    catch (e)
    {
        return;
    }

    // Recorrer todos los elementos encontrados
    for (let i = 0; i < archivos.length; i++)
    {
        // Obtener la ruta completa
        let ruta = path.join(dir, archivos[i]);

        try
        {
            // Comprobar si es una carpeta
            if (fs.statSync(ruta).isDirectory())
            {
                // Entrar en la subcarpeta
                buscar(ruta, nombre);
            }
            // Comprobar si el nombre coincide
            else if (archivos[i].includes(nombre))
            {
                // Mostrar la ruta del archivo
                console.log(ruta);
            }
        }
        catch (e) {}
    }
}

// Función para recibir el nombre del archivo
function preguntarNombre(nombre)
{
    // Iniciar búsqueda
    buscar(carpeta, nombre);

    // Cerrar interfaz
    rl.close();
}

// Solicitar la ruta de búsqueda
rl.question("Ruta: ", function(ruta)
{
    carpeta = ruta.trim();

    // Comprobar si la ruta existe
    if (!fs.existsSync(carpeta))
    {
        console.log("La ruta no existe.");
        rl.close();
        return;
    }

    // Comprobar si es una carpeta
    if (!fs.statSync(carpeta).isDirectory())
    {
        console.log("La ruta no es una carpeta.");
        rl.close();
        return;
    }

    // Solicitar nombre del archivo
    rl.question("Nombre: ", preguntarNombre);
});

Como ven el programa ya trae sus comentarios por si no lo entienden, ya que lo tenemos aguardado en el escritorio abrimos el CMD o símbolo del sistema y lo ejecutamos así


Nos pide la ruta de la carpeta yo le daré esta

C:\Users\zeta_\Music\COPIA DE crackmes.de\users

Y luego no pide el nombre del archivo yo le pondré este, como en la imagen


Y para finalizar damos enter y nos arroja una serie de resultados, ya que la palabra crackme.zip se repite mucho, pero para saber si encontró el archivo que buscábamos o si lo mostró en la serie de resultados daremos clic derecho en la pestaña del CMD así


Y damos clic en buscar y escribimos el nombre de usuario y nos arroja esto


Como vemos si lo encontró, esto quiere decir que el programa si funciona, ojalá a alguien le sirva este programa... yo puse como ejemplo la copia de crackmes.de y me mostró varios resultados porque se repite mucho ese nombre de archivo, pero si ustedes buscan uno que casi no se repita mostrara menos resultados, otra cosa el programa distingue entre mayúsculas y minúsculas

Bueno saludos Flamer

jueves, 29 de octubre de 2026

Solucion Al Crackme 5 De La Pagina Enigmagroup

Hola amigos hoy veremos el crackme 5 de la antigua página de enigmagroup, así que primero miramos los string y para buscar el cartelito correcto y nos muestra esto


Hay podemos ver el cartelito correcto y el incorrecto y si damos doble clic en el mensaje no manda a esta zona


Como pueden ver hay se miran los textos que mencione, así que si nos vamos más arriba miramos la API  vbaVarTstEq  que se encarga de comparar dos valores


Asi que ponemos el breakpoint en dicha API y damos ejecutar y nos pide el serial yo ingresare el que se mira en la imagen


Se detiene justo en ese lugar que pusimos el breakpoint, de hay en adelante nos vamos traceando con F7 puro F7 hasta llegar a esta zona


En la imagen observamos que compara el serial que ingresamos con este:

"5A195-02D2D-05A2D-5A10E"

Si se fijan en el crackme no pudimos poner más de 4 dígitos en los campos de textos, así que buscaremos la API len que es la encargada de obtener el número de dígitos de un string así que escribimos len en módulos y aparecen 2, así que a las 2 les pongo un breakpoint


Luego escribimos en los cuadros de texto y se detiene justo aquí


Yo ingresé 5 dígitos en el primer cuadro de texto y como vemos unas líneas abajo esta una comparación, compara EAX con 4, así que modificamos ese 4 con 7


 

Ahora nos vamos traceando hasta la línea 0040352F antes de que se ejecute la API rtcMidCharVar que es la que recorta la cadena ingresada a 4 y es el valor que modificaremos en la línea  0040352F  yo le pondré 7 también y quedara así


Ahora aguardamos los cambios para eso damos clic en parchear archivo


Y renombramos el archivo como "app5_crack.exe" y ahora si ingresamos el valor de arriba y nos arroja el cartelito correcto


Bueno parece que aquí quedo resuelto, pero les cuento que yo creía eso, hasta otro día que no funciono el mismo serial y revise y era otro, así que se me prendió el foco y dije este crackme tiene que con la fecha así que busque en los módulos o en las APIs la encargada de eso y es la API GetDate en el programa la muestra así rtcGetDateVa  y ponemos un breakpoint en cada una para ver en cuál se detiene


Pero otra cosa para que funcione tiene que detener el crackme y volverlo a ejecutar y se detiene justo aquí


Como vemos en el FPU está la fecha solo le pedimos a Google que nos la dé y es


Una cosa el programa lee la fecha en este formato 29/10/2026 y el primer dígito es un 2 y después que tiene el dígito este es multiplicado por 45 como en la imagen


Así que toma el 2 y lo multiplica por 45 y luego lo convierte a hexadecimal para después tomar el 9 y lo multiplica por 45... Ahora si se preguntan que pasa cuando se encuentra con la barra invertida "/" pues le cuento lo multiplica por 0 ..... aquí se muestra como toma la fecha


Pero antes de que pregunte si es una barra invertida cada 2 dígitos que lee pone un guion "-"

ahora si el valor es 0 multiplica por 1 aquí les dejo una tabla


Ahora yo le hice un keygen en JavaScript y HTML aquí el código

<html>
<head>
<title>Keygen Crackme 5 De EnigmaGroup...:::Flamer:::...</title>
</head>
<body bgcolor="black">
<center>
<marquee style="font-size:30;color:yellow;">Keygen Crackme 5 De EnigmaGroup ...:::Flamer:::...</marquee><br><br>
<label style="color:white;">Serial:</label>
<input type="text" id="pass" size='40' style="background-color:Gray;color:white;text-align:center;"><br><br>

<input type="button"  value="Generar" onclick="genera()">
</center>
<script>
function copiar1() 
{
   let c=document.getElementById('pass'); 
   navigator.clipboard.writeText(c.value);
}
//==================================================================================
function genera()
{ 
   let fecha=new Date();
   let dia=String(fecha.getDate()).padStart(2, '0');
   let mes=String(fecha.getMonth() + 1).padStart(2, '0');
   let año=fecha.getFullYear();
   let chafe=dia + "/" + mes + "/" + año; 
   
   let x,digi,pws="",mul,conta=0;
   
   for(x=0;x<chafe.length;x++)
   {
      digi=chafe[x];
	  if(digi=="/")
	  {
	     mul=45*0;
		 
	  }
	  else if(digi=="0")
	  {
	     mul=45 * 1;
	  }
	  else 
	  {
	     mul=45 * parseInt(digi);
	  }
	  if(conta==2)
	  {
	     pws+="-";
	     conta=-1;
   	  }
		 
	   pws+=mul.toString(16);
	   conta++;
	  
   }
   document.getElementById("pass").value= pws.toUpperCase();
}
</script>
</body>
</html>

Aquí una imagen

Bueno amigos creo que eso es todo saludos Flamer y espero les guste

miércoles, 28 de octubre de 2026

Solucion Al Crackme 1 http://usuarios.lycos.es/sisar

Hola amigos hoy veremos la solución de un crackme sencillo, pero entretenido, no sé el nombre del usuario que lo creo solo sé que se publicó en http://usuarios.lycos.es/sisar

Aquí una foto del reto


Así que lo abrimos con el depurador x32dbg y buscamos en los string y encontramos esto


Y nos manda a esta zona


Hay podemos ver el mensaje correcto y más arriba una API que compara así que le ponemos un breakpoint y lo ejecutamos


Y como vemos nos pide nombre de usuario y serial yo le pondré como nombre "polon" y como serial "123456" y damos clic en comprobar



Y como podemos ver hay se mira que compara el serial que ingresamos con este otro ";=>?@AC" y si cambiamos de nombre y ponemos como serial "123456" sigue comparando con la misma cadena así que ponemos como nombre "flamer" y como serial";=>?@AC" y nos arroja el cartelito correcto


Al parecer no se le puede hacer keygen, ya que el serial es el mismo para todos los nombres, se podría decir que lo tenemos resuelto, pero se preguntaran de donde viene esa cadena pues lo buscaremos y es más arriba en la línea 004021EA vemos que está la API vbaLenBstr que es la encargada de decirnos la longitud de una cadena


Y por debajo de la API vbaLenBstr  se encuentra un ciclo que toma digito por dígito de una cadena o número constante que es este "1345679" y toma cada dígito de esta cadena y lo convierte a su valor ASCII para después sumarle A que en decimal es 10 y para después lo convierte de nuevo a cadena y el resultado del ciclo es el serial ";=>?@AC"....Aquí les dejo en JavaScript que es lo que hace el programa l

<html>
<head>
<title>Keygen Crackme 1 http://usuarios.lycos.es/sisar ...:::Flamer:::...</title>
</head>
<body bgcolor="black">
<center>
<marquee style="font-size:30;color:yellow;">Keygen Crackme 1 http://usuarios.lycos.es/sisar ...:::Flamer:::...</marquee><br><br>
<label style="color:white;">Serial:</label>
<input type="text" id="pass" size='50' style="background-color:Gray;color:white;text-align:center;">
<input type="button" value="Copy" onclick="copiar()"><br><br>
<input type="button"  value="Generar" onclick="genera()">
</center>
<script>
function copiar() 
{
   let c=document.getElementById('pass'); 
   navigator.clipboard.writeText(c.value);
}
//==================================================================================
function genera()
{ 
   let p="1345679",pass="";
   let x,digi;
   for(x=0;x<p.length;x++)
   {
      digi=p[x].charCodeAt(0);
      digi=digi+10;
      pass+=String.fromCharCode(digi);
   }
   
   document.getElementById("pass").value=pass;  
}
</script>
</body>
</html>

Aquí una foto



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