Ingeniería Inversa

 

 

 

 

INGENIERÍA INVERSA: en el caso concreto del software, se conoce por ingeniería inversa a la actividad que se ocupa de descubrir cómo funciona un programa, función o característica de cuyo código fuente no se dispone, hasta el punto de poder modificar ese código o generar código propio que cumpla las mismas funciones. La gran mayoría del software de pago incluye en su licencia una prohibición expresa de aplicar ingeniería inversa a su código, con el intento de evitar que se pueda modificar su código y que así los usuarios tengan que pagar si quieren usarlo.

 

SERIAL: es un código que permite que un programa de pago pueda ser usado completamente sin restricciones.

 

PARCHE: es un programa que se encarga de hacer cambios a otro para corregirle errores, agregarle funcionalidades, etc.

 

CRACK: es un parche creado sin autorización del desarrollador de un programa y cuya finalidad es la de modificar su comportamiento.

 

KEYGEN: es un programa informático que al ejecutarse genera un código (serial) para que un determinado programa de pago en su versión de prueba (Trial) pueda ofrecer los contenidos completos del programa ilegalmente y sin conocimiento del desarrollador. Normalmente los keygens son archivos ejecutables (en formato *.exe) que se ejecutan sin necesidad de ser instalados. Suelen pesar muy poco (menos de 1 MB). Existen varios tipos de keygens, los normales pueden burlar la seguridad del programa, pero también hay otros keygens que son más complejos y permiten desbloquear más aplicaciones. Un keygen no desbloquea los programas demo ya que el programa no tiene toda la funcionalidad del programa registrado y solamente se puede obtener comprándolo desde su página web.

 

Es muy común el pensar que un keygen y un crack son lo mismo. Lo cierto es que, aunque se utilizan para lo mismo, usan sistemas diferentes: mientras que un keygen es un ejecutable que genera un código o serial para poder desbloquear el programa, un crack simplemente hace una modificación sobre el programa para poder "completarlo". Es mejor un keygen, ya que un crack realiza una modificación para registrarlo y, al actualizarlo, se reemplaza el ejecutable crackeado y lo cambia por el nuevo volviéndolo demo o trial otra vez. Es por ello que se prefiere un keygen, en vez de un crack o parche.

 

CRACKER: es la persona que rompe o vulnera algún sistema de seguridad.

 

CRACKME: es un pequeño programa diseñado para probar las habilidades de ingeniería inversa de un programador.

 

KEYGENME: un KeygenMe es un tipo de crackme que requiere exclusivamente que lo rompas descubriendo su rutina para generar o procesar un nombre para obtener como resultado un serial y así realizar un keygen basándote en ese algoritmo.

 

CRACK No-CD o CRACK No-DVD: es un archivo ejecutable modificado especial que remueve los mecanismos internos de verificación de CD permitiéndole al usuario usar software sin la necesidad de insertar el CD-ROM o DVD-ROM.

 

Además de archivos ejecutables crackeados, la protección de CD puede ser en ocasiones burlada creando una mini imagen (de disco) que incluya solo el contenido del CD-ROM necesario para eludir la protección. Esta imagen puede ser entonces montada con un emulador de imágenes de disco como Daemon Tools para hacer creer a la computadora del usuario que la imagen de disco es el CD-ROM físico del software y que éste se encuentra en la unidad de disco. No obstante, algunos programas intentan descubrir tales emuladores de imágenes de disco y se rehusarán a funcionar si encuentran uno. Existen otros programas que intentan esconder la presencia de los emuladores de imágenes de disco de tal software protegido.

 

ENSAMBLADOR: es un tipo de programa que se encarga de traducir un código fuente escrito en un lenguaje ensamblador, a un código objeto que contiene código máquina, ejecutable directamente por el microprocesador.(Ver instrucciones del lenguaje ensamblador).

 

DESENSAMBLADOR: es un programa que traduce el lenguaje de máquina a lenguaje ensamblador, la operación inversa de la que hace el ensamblador. Un desensamblador difiere de un decompilador, en que éste tiene como objetivo un lenguaje de alto nivel en vez de al lenguaje ensamblador. La salida de un desensamblador, el desensamblado, es a menudo formateada para la legibilidad humana en vez de ser adecuada para la entrada a un ensamblador, haciendo que éste sea principalmente una herramienta de ingeniería inversa.

 

COMPILADOR: es un programa que traduce un programa que ha sido escrito en un lenguaje de programación a un lenguaje diferente, usualmente lenguaje de máquina, aunque también puede ser traducido a un código intermedio (bytecode) o a texto. Este proceso de traducción se conoce como compilación.

 

DECOMPILADOR: es un programa que realiza la operación inversa a un compilador. Esto es, traducir código o información de bajo nivel de abstracción (sólo diseñado para ser leído por un ordenador, ej. código máquina) a un lenguaje o medio de mayor nivel de abstracción (usualmente diseñado para ser leído por un humano, ej. cualquier lenguaje de programación de alto nivel).

 

DEPURADOR: (en inglés, debugger), es un programa usado para probar y depurar (eliminar) los errores de otros programas (el programa "objetivo"). El código a ser examinado puede alternativamente estar corriendo en un simulador de conjunto de instrucciones (ISS), una técnica que permite gran potencia en su capacidad de detenerse cuando son encontradas condiciones específicas pero será típicamente algo más lento que ejecutando el código directamente en el apropiado (o el mismo) procesador. Algunos depuradores ofrecen dos modos de operación - la simulación parcial o completa, para limitar este impacto.

 

CRIPTOGRAFÍA Y ESTEGANOGRAFÍA

 

Si bien la esteganografía puede confundirse con la criptografía, por ser ambas parte de los procesos de protección de la información, son disciplinas distintas, tanto en su forma de implementar como en su objetivo mismo.

 

Mientras que la criptografía se utiliza para cifrar o codificar información de manera que sea ininteligible para un probable intruso, a pesar que conozca su existencia, la esteganografía oculta la información en un portador de modo que no sea advertido el hecho mismo de su existencia y envío. De esta última forma, un probable intruso ni siquiera sabrá que se está transmitiendo información sensible.

 

Sin embargo, la criptografía y la esteganografía pueden complementarse, dando un nivel de seguridad extra a la información, es decir, es muy común (aunque no imprescindible) que el mensaje a esteganografiar sea previamente cifrado, de tal modo que a un eventual intruso no sólo le costará advertir la presencia de la mensajería oculta; sino que si la llegara a descubrir, la encontraría cifrada.

 

...