anun1

miércoles, 22 de abril de 2026

Solucion al Reto Crackme 8 by ShoulcK

Hola hoy veremos la solución del reto 8 de ShoulcK, como el reto nos pide parchar el botón no pondré como hacerlo en x64dbg si no que usare el HxD para editarlo dejaré una captura

les dejaré el link donde yo pido ayuda en el hacker.net....agradesco a MCKSys Argentina y a EdePC por contestar y ayudarme a entender saludos y gracias

https://foro.elhacker.net/ingenieria_inversa/ayuda_con_el_crackme8byshoulck-t523914.0.html


Eso son los bits que tenemos que cambiar, ya que tenemos parchado el programa nos pide el serial el cual lo divide en 2 partes, por ejemplo si ingreso 111111111222222222 este lo convierte en hexadecimal y queda así 18ABEF78AFFDD8E y lo divide así

primera parte ala que llamaremos a = 8AFFDD8E  

segunda parte ala que llamaremos d = 18ABEF7 

bueno primeramente a las 2 las pasa por la función xor y ala parte a la xorea con  C88FFFC7 que en decimal es 3364880327 y ala parte d con 796E723 que en decimal es 127330083

despues de pasar por el xor a la dos partes se les resta pero a la parte d se le resta 1 si la bandera  CF esta en 1

ala primera parte que es a se le resta B882ECC7 que en decimal es 3095588039 y a la segunda parte que es d sele resta 28E18DE que en decimal es 42866910

asi que yo me invente un simple programa de fuerza bruta pero no es ir intentando numero por numero no eso tardaria un monton, solo es ir cambiando los digitos del serial carater por carater y este nos dice que tanto nos vamos acercando o alejando

aqui se los dejo primero para calcular a

<html>
<head><title>Brute Force</title>
</head>
<body>
<center>
<br><br>
<input type="text"  id="x" style="text-align:center;">
<input type="button" value="calcular" onclick="calcula()">
<br><br>
<textarea id="log" cols="50" rows="15"></textarea>
</center>
<script>
function calcula()
{
   let valor=document.getElementById("x").value;
   let a=0;b=0;
 
   a=valor ^ 3364880327;
   b=valor - 3095588039;
 
   if(a==b)
   {
      document.getElementById("log").value="LOS DOS SON IGUALES";
   }
   else
   {
      document.getElementById("log").value="el valor de a=" + a + "\n\nel valor de b=" + b;
	  
   }
}
</script>
</body>
</html>

ahora para calcular d

<html>
<head><title>Brute Force</title>
</head>
<body>
<center>
<br><br>
<input type="text"  id="x" style="text-align:center;">
<input type="button" value="calcular" onclick="calcula()">
<br><br>
<textarea id="log" cols="50" rows="15"></textarea>
</center>
<script>
function calcula()
{
   let valor=document.getElementById("x").value;
   let a=0;b=0;
 
   a=valor ^ 127330083;
   a++;
   b=valor - 42866910;
 
   if(a==b)
   {
      document.getElementById("log").value="LOS DOS SON IGUALES";
   }
   else
   {
      document.getElementById("log").value="el valor de a=" + a + "\n\nel valor de b=" + b;
	  
   }
}
</script>
</body>
</html>

Vamos a probar el primero no tiene caso que probemos los dos si se trabajan igual,

NOTA: este utimo codigo lo probe en chatgpt y meda una formula la cual meda el valor deseado, yo no entendi nada pero hay se las dejo


como vemos al final de la imagen esta el valor 85098497 que es el valor a buscar en fin seguimos 

ingresamos 1082750659 y nos muestra lo siguiente

como vemos los 2 son numeros negativos pero estan serca uno del otro asi que modificare los ultimos digitos del numero 1082750659 por 1082750567 y me arroja...Nota tambien me dio 1082750559 


son casi iguales asi que los ejecute y para el primero el valor es 1082750559 y el segundo 85098497 ahora los paso a hexadecimal 

a= 85098497 --->  5128001

d=1082750559 --->4089765F

despues lo juntamos

51280014089765F ---->365495262636504671

luego ingresamos el serial en el crackme y nos arroja lo siguiente


El crackme tiene varias soluciones hacerle un keygen creo que es algo complicado mas si usas html con javascript manejar numeros negativos da problemas y aparte que son numeros grandes, se me ocurre un keygen que este cambie los digitos del codigo anterior por nosotros pero eso lo veo complicado en fin saludos Flamer

 

lunes, 6 de abril de 2026

Solucion al Reto Crackme 1 by RedH@wK

Hola amigos hoy vengo con la solución del reto 1 de redH@wK, al principio yo creía que era necesario un nombre y un serial, pero la cosa era más sencilla de lo que parecía. Aquí una foto del reto.


Analizándolo un poco me di cuenta de que está hecho en VB6 y está en P-Code así que al abrirlo con x64dbg no pude ver el código ensamblador. Me dijeron en crackslatinos que poniendo un breakpoint en msvbvm60.dll podía verlo analizándolo y ver lo que hacía, pero yo buscaba cómo verlo de perdida en ASM, así que busqué algunas herramientas; una de ellas fue VB Decompiler, el cual me daba el código en P-Code aquí una imagen.


y tambien la herramienta VBDEC, la cual me mostraba lo mismo que la anterior aquí una imagen.


Pero como no sé traducir ese lenguaje, así que le pedí ayuda a ChatGPT. Primero le pregunté si sabía leer o traducir el lenguaje P-Code y me dijo que sí, así que le pasé el código y me mostró lo siguiente.


Codigo


Dim txt As String
txt = txtPassword.Text

If txt = "" Then
    Form1.Show
    Me.Hide
Else
    MsgBox "Serial no valido. Vuelve a intentarlo"
    txtPassword.SetFocus
    SendKeys "{Home}+{End}"
End If

Como vemos, el código está más limpio y entendible, y vemos que solo hace una comparación el campo del serial solo pregunta si este está vacío y, si lo está nos muestra el cartelito correcto, así que quitamos el signo de interrogación y en el campo nombre ponemos el que gusten; solo el campo serial quedaría en blanco y ya queda y muestra lo siguiente.


 

O mejor dicho, como en la imagen siguiente.


jajajajajaja esta imagen es de un amigo de Crackslatinos. Saludos  EdePC, y buena imagen.

Bueno espero les haya gustado Saludos  Flamer


sábado, 4 de abril de 2026

Resolviendo el reto 5 de JavaScript de la pagina rogerfm.net usando ChatGPT

Hola amigos hoy veremos como resolvemos el reto de JavaScript de la página rogerfm.net el más difícil que es el número 5, por lógica se sabe que si resolvemos este los demás son pan comido pues se supone que este es el más difícil bueno pero si se preguntan como lo resolveremos pues les diré que lo haremos usando la herramienta de ChatGPT bueno empecemos este es el reto.


Así que elegimos el 5 y nos muestra lo siguiente:


Elegimos la opción ver fuente del marco y nos mostrará el código fuente del marco en HTML y es el siguiente:


Copiamos el codigo de JavaScript como en la imagen y la pegamos en ChatGPT y le decimos lo analize: 

Asi que lo analiza y nos suelta una explicacion de lo que hace el codigo pero ahora le pido que me de la contraseña:


Asi que comprobamos copiando la palabra smoking en el reto y nos da lo siguiente:



Bueno como ven es algo sencillo usando esta herramienta de IA y no hay necesidad de quebrarse la cabeza en fin espero les guste saludos Flamer


martes, 3 de marzo de 2026

Convertir De Texto a voz en JavaScript y Html

Hola amigos hoy veremos como convertir de texto a voz en JavaScript, yo hace tiempo lo hice en VBScript, pero ahora lo traigo en JavaScript y HTML, les dejaré 2 códigos uno es con archivo .hta y el otro en HTML para que vean que se puede hacer de diferentes formas... bueno empezamos primero la versión hta es esta


su codigo es el siguiente

<html>
<head>
<title>De texto a Voz</title>
</head>

<body>
<marquee>De texto a Voz By Flamer</marquee><br><br>
<center>
Texto:<br><br>
<textarea id="text" name="comentarios" rows="20" cols="50">Hola mundo</textarea><br>
<input type="button" value="Aceptar" onclick="hablar()">
</center>
<script>
function hablar()
{
   var voz = new ActiveXObject("SAPI.SpVoice"); //crea un objecto SAPI
   var txt = document.getElementById("text").value; //toma el valor del campo de texto text
   
   if(txt=="")
   {
      alert("Campo de voz vacio");
   }
   else
   {
      voz.Speak(txt); //reproduce el texto a voz
   }
}
</script>
</body>
</html>

lo copean y aguardan con el nombre "voz.hta" no olviden la extensión .hta y aprobar.

Ahora, si lo quieren hacer con la extensión HTML, aquí les dejo su código.


<html>
<head>
<title>Texto a Voz JavaScript by Flamer</title>
</head>
<body>
<center>
<h2>Conversor de Texto a Voz</h2>
<textarea id="texto" rows="4" cols="30">Hola mundo, esto es una prueba de voz.</textarea>
<br>
<button onclick="hablar()">Hablar</button>
</center>
<script>
function hablar()
{
   // 1. Obtener el texto
   const texto = document.getElementById("texto").value;
            
   // 2. Crear el objeto de síntesis de voz
   const mensaje = new SpeechSynthesisUtterance(texto);
            
   // 3. Configurar idioma y voz
   mensaje.lang = 'es-ES'; // Idioma español
   mensaje.rate = 1; // Velocidad (0.1 a 10)
   mensaje.pitch = 1; // Tono (0 a 2)
            
   // 4. Reproducir
   window.speechSynthesis.speak(mensaje);
}
    </script>
</body>
</html>

lo copean y aguardan con el nombre "voz.html" y aqui una foto


es algo simple pero entretenido y espero les guste saludos Flamer


lunes, 2 de marzo de 2026

Generador De Claves Del Reto 5 De La Pagina Rogerfm.net

Hola amigos hoy les traigo el generador de claves del reto o crackme 5 de la página Rogerfm.net. anteriormente había subido el 4 pues ahora le tocó al 5 me faltan los demás, pronto los subiré.

Bueno, aquí una foto del reto.


si ingresamos un nombre y un serial x nos muestra lo siguiente


bueno pues aqui les dejor el codigo del generador de claves

<html>
<head>
<title>Keygen Crackme 5 De Rogerfm.net   ...:::By Flamer:::...</title>
</head>
<body bgcolor="black">
<center>
<marquee style="font-size:30;color:yellow;">Keygen Crackme 5 De Rogerfm.net   ...:::By Flamer:::...</marquee><br><br>
<label style="color:white;">Nombre:&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</label>
<input type="text" id="nom" size='50' style="text-align:center;">&nbsp&nbsp
<input type="button" value="Copy" onclick="copiar1()"><br><br>
<label style="color:white;">Serial:&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</label>
<input type="text" id="pass" size='50' style="text-align:center;">&nbsp&nbsp
<input type="button" value="Copy" onclick="copiar2()"><br><br>
<input type="button"  id="103" value="Manual" onclick="Generar()">
<input type="button"  value="Limpiar" onclick="limpia()">
</center>
<script>
function limpia()
{
   document.getElementById("nom").value="";
   document.getElementById("pass").value="";
}
function copiar1() 
{
   let c=document.getElementById("nom"); 
   c.select();
   document.execCommand('copy');
}
function copiar2() 
{
   let c=document.getElementById("pass"); 
   c.select();
   document.execCommand('copy');
}
function Generar()
{
   let nom,serial,x,eax,ebx=0,edi=0,digi;
   
   nom = document.getElementById("nom").value;
   
   if(nom.length>3)
   {
     ebx=1;
   
     for(x=0;x<nom.length;x++)
	 {
	    digi=nom.substr(x,1).charCodeAt(0);
        eax = digi * ebx;
        edi = edi + eax;
        ebx = ebx + 6;
     }  
     serial = edi * 256;
     document.getElementById("pass").value = serial;
	}
   else
   {
      alert("El Nombre Tiene Que Ser Mayor De 3 Digitos");   
   }
}
</script>
</body>
</html>

Solo copian y aguardan en el bloc de notas como "genera.html" y al ejecutarlo aparecerá lo siguiente:


Así que ahora lo probamos e ingresamos como serial flamer y nos da lo siguiente.


Después ingresamos los datos y nos arroja lo siguiente:


Bueno espero les guste y viendo el código, se den una idea de cómo funciona el crackme.

En fin saludos Flamer

lunes, 23 de febrero de 2026

Remplazar string de un archivo ejecutable o binario en C++

Hola, amigos hoy les dejaré un código en c++ el cual remplazar un valor Spring por otro desde c++, ya que en JavaScript no pude hacerlo y no me quise complicar la vida lo realice en c++, este programa o ejercicio como lo quieran llamar primeramente lo mire de un amigo, no sé si fue necroxia u otro usuario del grupo crackslatinos no recuerdo quien, pero él lo realizo en aquel tiempo en vb6, pero como vb6 ya quedo para la historia yo lo realice en otro lenguaje.

Nota:este programa no remplaza o lee valores Unicode

bueno aquí una imagen del ejecutable que le vamos a remplazar el string, solo al darle clic nos muestra esto

.

Bueno ahora abriremos el editor de c++ y pegamos el siguiente código
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    string ruta,buscar,reemplazar; //Evaluation  felicidade
    
    cout<<"Dame la ruta del archivo: ";
    cin>>ruta;
    
    cout<<"Dame el texto a buscar: ";
    cin>>buscar;
    
    cout<<"Dame el texto a remplazar, DEBE SER DE LA MISMA CANTIDAD DE CARACTERES: ";
    cin>>reemplazar;

    if (buscar.size() != reemplazar.size())
    {
        cout << "Error: deben tener el mismo tamaño\n";
        return 1;
    }

    // Abrir archivo
    fstream file(ruta, ios::binary | ios::in | ios::out);

    if (!file)
    {
        cout << "No se pudo abrir\n";
        return 1;
    }

    // Leer todo el archivo
    file.seekg(0, ios::end);
    streamsize size = file.tellg();
    file.seekg(0, ios::beg);

    vector<char> buffer(size);
    file.read(buffer.data(), size);

    // Buscar
    auto it = search(buffer.begin(), buffer.end(),
                     buscar.begin(), buscar.end());

    if (it == buffer.end())
	{
        cout << "Texto no encontrado...Nota:Este programa no lee valores unicode\n";
        file.close();
        return 1;
    }

    // Calcular posición
    streamsize pos = distance(buffer.begin(), it);

    cout << "Encontrado en: " << pos << endl;

    // Reemplazar en memoria
    for (size_t i = 0; i < reemplazar.size(); i++)
    {
        buffer[pos + i] = reemplazar[i];
    }

    // Volver al inicio y escribir todo
    file.seekp(0, ios::beg);
    file.write(buffer.data(), size);

    file.close();

    cout << "Reemplazo completado\n";

    return 0;
}

Damos compilar y ejecutar



El ejecutable que tome como ejemplo es un crackme llamado reverseMe.exe y lo tengo en la misma carpeta donde tengo el código de este programa por esa razón solo puse su nombre y no toda una ruta.


La palabra a buscar es license y la remplazaré por 1234567 y al hacerlo me muestra el mensaje que se realizó con éxito así que ahora ejecutamos el crackme y me muestra el siguiente mensaje


Bueno creo que eso es todo y espero les guste, otra cosa ya tengo la solución de ese crackme, es algo sencillo a ver si lo publico en el foro del hacker.net y en underc0de

Nos vemos hasta la próxima Flamer y saludos a necroxia y a todos los Crackslatinos


domingo, 22 de febrero de 2026

Generador De Claves Del Crackme 3 De RedH@wK

Hola amigos hoy traigo el generador de claves del reto 3 de RedH@wK... Es algo sencillo ya que vean el código sabrán por qué, y entretenido, porque no hay algún crackme sencillo para pasar el rato y que te levante el ánimo; no se compara el ánimo como un reto difícil, pero es casi igual... En fin, aquí una foto del reto

 .

Ahora el código en HTML y JavaScript.

<html>
<head>
<title>Generador De Claves Del Crackme 3 De RedH@wK ...:::By Flamer:::...</title>
</head>
<body bgcolor="black">
<center>
<marquee style="font-size:30;color:yellow;">Generador De Claves Del Crackme 3 De RedH@wK ...:::By Flamer:::...</marquee><br><br>
<label style="color:white;">ID:&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</label>
<input type="text" id="id" size='50' style="background-color:Gray;color:white;text-align:center;">
<input type="button" value="Copy" onclick="copiar1()">
<br><br>
<label style="color:white;">Serial:&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</label>
<input type="text" id="pass" size='50' style="background-color:Gray;color:white;text-align:center;">
<input type="button" value="Copy" onclick="copiar2()">
<br><br>
<input type="button"  value="Generar" onclick="generar()">
<input type="button"  value="Limpiar" onclick="limpia()"><br><br>

</center>
<script>
function copiar1() 
{
   let c=document.getElementById('nick'); 
   c.select();
   document.execCommand('copy');
}
function copiar2() 
{
   let c=document.getElementById('pass'); 
   c.select();
   document.execCommand('copy');
}
function limpia()
{
   document.getElementById("nick").value="";
   document.getElementById("pass").value="";
}
function generar()
{   
   let id=document.getElementById("id").value;
   let i,digi,clave;
   if(id=="")
   {
      alert("Error el campo esta vacio");
   }
   else
   {
       i=id.substr(0,1); //tama el primer valor del string
       digi=i.charCodeAt(0); //lo comvierte a su valor ascii
       clave=(digi*152700)+75000000+900; //lo multiplica y lo suma
       document.getElementById("pass").value=clave;
   }
}
</script>
</body>
</html>

Ahora lo probaremos insertando la palabra Flamer y nos da lo siguiente en el generador de claves.


Bueno, inserté Flamer y nos dio el valor de 85689900, así que lo probaremos.


Nos muestra el mensaje correcto, así que final feliz... Reto resuelto, creo que eso es todo, espero les guste y miren el código.

saludos Flamer