Generación de Seriales
Esta es una breve introducción a los métodos utilizados para generar seriales o claves de registro y los medios para saltar estas validaciones. Para esto se requiere de una comprensión básica de Assembler, ya que se requiere un conocimiento de las instrucciones básicas de ASM como MOV, POP, PUSH, ADD, LEAD, etc. Esto sin dejar de lado el significado de cada uno de los registros utilizados por Assembler como EAX, EDX, ECX, etc. Aunque en el presente documento, no haremos un uso detallado de estas instrucciones, definitivamente se requiere su comprensión para realizar ingeniería reversa y cracking.
En más de una ocasión nos hemos encontrado con aplicaciones en la que nos solicitan, el ingreso de una clave o número de serie para proceder a usar el programa en cuestión, con este documento mostraremos de una forma general el proceso realizado para la generación de los keygens y la forma de obtener la clave válida para pasar el proceso de registro, todo ello con un fin educativo.
Para realizar esta tarea, haremos uso de OllyDbg. Para ello buscaremos una aplicación que nos solicite el ingreso de una clave y número de serie para poder usarla.
Podemos buscar en cualquie página que nos brinde software una aplicación de pago (Freeware, Shareware, etc.) Para nuestro proposito usaremos una aplicación from the wild.
Descargamos, instalamos y ejecutamos la aplicación aquí nos mostrará un cuadro de texto donde nos pedirá que ingresemos el nombre y el código de registro. Ingresamos un nombre y numero de serie cualquiera y presionamos en el botón registrar, con lo que nos mostrará el mensaje indicándonos que el código de registro ingresado no es válido. En este punto vamos a OllyDbg y en la ventana de depuración presionamos F12 lo que pausa la ejecución del programa y luego presionamos Alt+K aquí podemos ver las ultimas llamadas a funciones realizadas.
Dentro de ella una en especial, es la llamada desde una función en la dirección 0041CF76, esto nos da unas primeras pistas sobre donde podría estar la función encargada de realizar la validación del serial.

Vamos a la dirección especificada para ello en la ventana principal de OllyDbg donde están las direcciones en ejecución presionamos Ctrl.+G y vamos a la dirección indicada.

En ella podemos ver que hay un salto hacia la dirección 0041CF8 . Esta es la dirección donde se llama a la DLL que se encarga de invocar el cuadro de dialogo que nos muestra el mensaje y algunas direcciones antes podemos ver algunos mensajes de texto que son mostrados (algunos no han sido mostrados aún). Si continuamos mirando líneas arriba podemos encontrar en la dirección 0041CDE7 el mensaje que buscamos “Than you for your registration”.

Unas cuantas líneas más arriba podemos ver una llamada a la función MSVCRT ._mbscmp, esta función es utilizada generalmente para efectuar comparaciones y dos líneas arriba podemos ver el número de serie ingresado, el que es enviado como parámetro a la función y un segundo parámetro que no se muestra. Colocamos un punto de interrupción en esta línea, y reiniciamos la ejecución del programa, para ello presionamos Ctrl+F2 en OllyDbg y presionamos F9 hasta el punto de interrupción. En ese punto proseguimos paso a paso hasta la dirección 0041CD86.

En esta dirección es donde encontramos lo que estábamos buscando. El segundo parámetro que recibe la función es la cadena 8599471761443352275. Bingo! Esta es el número de serie correcto que se requiere para proceder con el registro, copiamos este texto, reiniciamos el programa normalmente y pegamos el texto ingresado. Listo nuestro programa está registrado.
Aún queda pendiente la construcción del Keygen :)
