Ingeniería inversa de software: ¿Cómo obtienen los seriales los crackers?

La ingeniería inversa es el proceso contrario a la ingeniería como tal. Si hablamos de ingeniería podemos deducirlo como un estudio realizado en el que se obtienen datos técnicos para realizar un producto, mientras que la ingeniería inversa es la forma de conocer como fue construido algo y como funciona y dependiendo de la aplicación para lo que fue utilizado podemos deducir si es legal o ilegal lo que se está haciendo.

OllyDbg_1

Una de las aplicaciones para las que más se usa este proceso es el de hacer ingeniería inversa al software, en la que por medio de distintas herramientas podemos conocer el funcionamiento de un programa generalmente comercial, para así poder conocer su algoritmo interno y el que determina como será licenciado el software, es decir podemos dar con un serial válido para usar el programa.

¿Cómo es este proceso?

El proceso de hacerle ingeniería inversa a un programa consiste en utilizar programas denominados “Debuggers” que permiten conocer el código interno del programa, pero generalmente lo muestra en lenguaje entendible para la maquina. Por ejemplo uno de los debuggers más conocidos y usados es el programa alemán OllyDBG, que permite “destripar” un ejecutable para conocer su código ensamblador interno, y así por medio de la lectura de este podemos conocer el algoritmo que usaron para licencia el programa.

Una vez se haya dado con el algoritmo, el cracker puede crear generadores automáticos de seriales o incluso realizar una pequeña copia del ejecutable original pero parcheado, es decir con el salto de instrucciones que permite licenciar el software.

Para prevenir esto las compañías de seguridad  crearon los empaquetadores, que son programas que contienen un algoritmo único que encripta el código del ejecutable original, lo que hace más difícil  crackearlo, además algunos de estos empaquetadores también permiten comprimir el ejecutable, lo que supone una gran ventaja para las desarrolladores. Aunque generalmente estos programas cuestan mucho dinero y esto supone un gran gasto de dinero para quién desarrolló el programa, aunque esto no debería de ser un problema si se quiere mantener un producto estable en el mercado.