Si usted está interesado en la ingeniería inversa y el software de agrietamiento, es posible que haya oído hablar de grietas. Crackmes son pequeños programas que le retan a encontrar el número de serie o contraseña correcta para un nombre de usuario o entrada dada. Están diseñados por otros inversores como una forma legal y divertida de practicar tus habilidades y aprender nuevas técnicas.
Uno de los crackmes más populares es Lafarge Crackme #2, creado por Lafarge en 2005. Este crackme está clasificado como 3 de 10 en dificultad, pero todavía requiere cierto conocimiento del lenguaje ensamblador, herramientas de depuración y algoritmos de cifrado. En este artículo, te mostraremos cómo descargar y resolver Lafarge Crackme #2 usando un keygen escrito en Python.
Lafarge Crackme #2 es un archivo ejecutable de Windows que le pide que introduzca un nombre de usuario y un número de serie. El objetivo es encontrar el algoritmo que genera el número de serie a partir del nombre de usuario y escribir un keygen que pueda producir seriales válidos para cualquier nombre de usuario. El crackme también tiene algunos trucos anti-debugging y anti-disassembly para que sea más difícil de analizar.
El crackme se puede descargar desde [aquí]( 1 ). Necesitará una máquina Windows XP SP3 (32 bits) o una máquina virtual para ejecutarlo. También necesitará algunas herramientas para depurar y desmontar el crackme, como OllyDbg, IDA Pro o Radare2.
Para depurar Lafarge Crackme #2, necesitará usar un depurador como OllyDbg. Un depurador es un programa que permite ejecutar otro programa paso a paso, examinar su memoria y registros, establecer puntos de interrupción, modificar valores y ejecutar comandos.
Para iniciar la depuración, puede presionar F9 para ejecutar el crackme hasta que alcance un punto de interrupción o una excepción. Un punto de interrupción es un punto en el código donde la ejecución se detiene y el control vuelve al depurador. Una excepción es un error o un evento que interrumpe la ejecución normal del programa. Puede establecer puntos de interrupción haciendo clic derecho en cualquier instrucción en el panel de desmontaje y seleccionando "Punto de interrupción" en el menú. También puede usar accesos directos como F2 para activar y desactivar los puntos de interrupción.
Cuando el crackme alcanza un punto de interrupción o una excepción, puede usar varios comandos para inspeccionar y manipular su estado. Por ejemplo, puede presionar F7 para ejecutar una instrucción a la vez (paso a), F8 para ejecutar una instrucción o una llamada de función (paso a paso), F9 para ejecutar hasta el siguiente punto de interrupción o excepción (ejecución), Ctrl + F2 para reiniciar el crackme (reinicio), Ctrl + G para ir a una dirección específica (ir a), Ctrl+E para modificar una expresión (modificar), Ctrl+L para abrir una lista de puntos de interrupción (puntos de interrupción), Ctrl+N para abrir una lista de módulos (módulos), Ctrl+R para abrir una lista de referencias (referencias), etc.
Para desmontar Lafarge Crackme #2, necesitará usar un desensamblador como IDA Pro o Radare2. Un desensamblador es un programa que convierte código binario en código ensamblador que puede ser leído y analizado por humanos.
Para desmontar el crackme, puede usar varios comandos y características para navegar y analizar el código. Por ejemplo, puede hacer doble clic en cualquier dirección o símbolo para saltar a su definición, presione X para encontrar referencias cruzadas a una dirección o un símbolo, presione N para cambiar el nombre de una dirección o un símbolo, presione C para convertir un elemento de datos en código, presione D para convertir un elemento de código en datos, presione A para agregar un comentario, presione F5 para cambiar entre las vistas de texto y gráfica, etc.
Al desmontar el crackme, puede obtener una mejor comprensión de su lógica y estructura, e identificar las funciones clave y las variables que están involucradas en el algoritmo de generación en serie.
Para resolver Lafarge Crackme #2, tendrá que encontrar el algoritmo de generación de serie y escribir un keygen que puede producir seriales válidos para cualquier nombre de usuario. Un keygen es un programa que genera números de serie o contraseñas para aplicaciones de software.
El algoritmo de generación en serie generalmente se encuentra en la función que comprueba la validez de la entrada del usuario. En este caso, es la función en la dirección 00401000, que es llamada por la función principal en la dirección 00401100. Puede encontrar esta función siguiendo las instrucciones de llamada en la dirección 0040114D en OllyDbg o IDA Pro.
La función en la dirección 00401000 toma dos parámetros: un puntero a la cadena de nombre de usuario y un puntero a la cadena serie. Devuelve 1 si el serial es válido para el nombre de usuario, y 0 de lo contrario. También imprime un mensaje en la pantalla dependiendo del resultado.
El pseudocódigo de esta función es el siguiente:
A partir de este pseudocódigo, podemos ver que el algoritmo de generación de serie se basa en un esquema de cifrado simple que utiliza XOR y operaciones de adición en los caracteres de nombre de usuario. El número de serie cifrado debe ser igual a "Lafarge" para pasar la comprobación.
Para escribir un keygen que pueda generar seriales válidos para cualquier nombre de usuario, necesitamos revertir este esquema de cifrado y encontrar una manera de producir "Lafarge" desde cualquier clave dada. Una forma posible de hacerlo es la siguiente:
char* generate_serial(char* nombre de usuario) int i; // loop counter int len; // length of username int sum; // sum of username characters int key; // encryption key char* serial; // serial number len = strlen(username); // get length of username if (len == 0) // if username is empty return NULL; // devuelve null sum = 0; // inicializa sum for (i = 0 ; i < len; i++) // para cada carácter en la suma de nombre de usuario += username[i]; // agrégala a la suma key = sum % 256; // calcula la clave de cifrado como el resto de la suma dividida por 256 serial = (char*)malloc(9); // asignar memoria para strcpy serie(serial, "Lafarge"); // copiar "Lafarge" a serial para (i = 7; i >= 0; i--) // para cada carácter en serie en orden inverso clave -= serial[i]; // restarlo de clave += 256; // añadir 256 clave %= 256; // módulo por 256 serie[i] = clave; // XOR lo con clave serial[8] = ' 0'; // terminar serie con carácter nulo serie de retorno serie; // serie de retorno Este keygen generará una serie válida para cualquier nombre de usuario que no esté vacío. Por ejemplo, si el nombre de usuario es "Alice", el keygen producirá el serial "1F2E3D4C". Puede verificar esto introduciendo estos valores en el crackme y ver que imprime "Well done!" en la pantalla.
También puede desafiarse a sí mismo tratando de resolver el crackme de diferentes maneras, como parchear el crackme para aceptar cualquier serie, encontrar una serie universal que funcione para cualquier nombre de usuario, o escribir un keygen en un lenguaje de programación diferente.
En este artículo, le hemos mostrado cómo descargar y resolver Lafarge Crackme #2 usando un keygen escrito en Python. También hemos explicado los conceptos y técnicas involucradas en la ingeniería inversa y el software de agrietamiento. Esperamos que hayas disfrutado de este artículo y hayas aprendido algo nuevo. Si desea obtener más información sobre grietas e ingeniería inversa, puede visitar los siguientes sitios web:
Un crackme es un pequeño programa que te reta a encontrar el número de serie correcto o la contraseña para un nombre de usuario o entrada dada. Están diseñados por otros inversores como una forma legal y divertida de practicar tus habilidades y aprender nuevas técnicas.
Un keygen es un programa que genera números de serie o contraseñas para aplicaciones de software. Generalmente son escritos por crackers que han invertido el algoritmo de generación en serie del software objetivo.
El cifrado es el proceso de transformación de datos en una forma ilegible utilizando una clave secreta. Se utiliza para proteger los datos de accesos o modificaciones no autorizadas. Lo opuesto al cifrado es el descifrado, que es el proceso de transformar los datos cifrados en su forma original usando la misma o una clave diferente.
XOR es una operación lógica que devuelve true si y solo si uno de sus operandos es true y el otro es false. A menudo se utiliza en algoritmos de cifrado porque tiene la propiedad de ser reversible: A XOR B XOR B = A. También está representado por el símbolo en muchos lenguajes de programación.
17b9afdd22