Reversando un KeyGen

[Wikipedia] Un keygen (del inglés key generator, generador de claves) es un programa informático que al ejecutarse genera un código (serial) para que un determinado programa de software de pago en su versión de prueba (Trial) pueda ofrecer los contenidos completos del programa ilegalmente y sin conocimiento del desarrollador.

  1. Obten el TDC KeyGenME ejecutando lo siguiente desde un terminal

    wget http://www.reversing.be/binaries/articles/20060115002634593.zip

  2. Descomprime el zip y los zips que tiene dentro. El programa keygenme.exe está en el directorio TDC8.

  3. Usando Immunity Debugger, abre y ejecuta keygenme.exe

    Figura 1- Interfaz del KeyGen

  4. Haz reverse engineering para determinar un par de inputs (para las cajas de texto name y serial) que te dé un resultado correcto.

Preguntas guía (debes contestarlas como parte del informe)

  1. Observa los nombres de los imports de este programa. ¿Cuál de ellos piensas que se invoca para leer los códigos que escribes en las cajas de texto? Explica tu contestación y cómo la corroboraste.

  2. Una vez se han leido los códigos, en ¿que direcciones los guarda el programa?

  3. ¿En que dirección vive la función a la que se le pasan los códigos que se leyeron de los textboxes? Explica cómo te aseguraste.

  4. ¿Qué características debe tener el input que provees en la caja que originalmente dice "your name here please"? Por ejemplo, ¿puede ser un número? ¿en qué rango? ¿puede ser un string? ¿de cuántos caracteres?.

  5. Para obtener el mensaje de éxito debes proveer un input en las dos cajas de texto. Según tu análisis, ¿el código correcto para la caja de serial depende de lo que hayas entrado en name? ¿O son independientes? Explica cómo lo sabes.

  6. Escribe un programa en C que sería capaz de generar 100 pares de name y serial que funcionarían para este Key Generator.

Shortcuts útiles en Immunity Debugger