01 - ¿Qué es la ingeniería inversa?
Definición
Para entender qué es la ingeniería inversa, vamos a usar una analogía sencilla. Imagina que todos los días desayunas un pan dulce que compras cerca de tu casa. Este último te llama tanto la atención que decides prepararlo por tu cuenta, pero, ¡sorpresa! No cuentas con la receta, aun así, no es motivo para alarmarse: todavía podemos recrearla analizando las características del pan; estas pueden ser el olor, el sabor, la textura, etc. A través de ellas, podemos reproducir la receta e incluso preparar un pan idéntico.
Esto último que acabo de mencionar es la ingeniería inversa, y es aplicable en cualquier rama: desde la música hasta el software, siendo este nuestro caso. Debemos entender que los programas en nuestra computadora cuentan con un código fuente, el cual define su funcionamiento. Sin embargo, este código no siempre es visible para el usuario; de hecho, ¡casi nunca lo es!
Como se puede esperar —y como mencioné en la analogía—, nuestro trabajo como ingenieros inversos consiste en entender el comportamiento de un producto a través de la recopilación de ciertas características y datos en torno a su naturaleza.
Ahora bien, ¿qué aplicaciones tendría esto?
Aplicaciones
La ingeniería inversa cuenta con un abanico inmenso de aplicaciones. Dentro de las más conocidas encontramos las siguientes:
-
Análisis y/o desarrollo de malware: Como lo indica el nombre, consiste en el análisis y/o creación de software malicioso. Tomar el malware como objeto de estudio es útil para mejorar las heurísticas de los antivirus y fortalecer la seguridad informática en general.
-
Análisis de vulnerabilidades en software: El hecho de analizar un producto en busca de posibles vulnerabilidades permite encontrar vectores de explotación que podrían ser aprovechados por actores maliciosos. Reportar estas vulnerabilidades ayuda a mejorar la calidad y seguridad del producto.
-
Creación de cheats: Uno de los usos más conocidos —aunque polémicos— de la ingeniería inversa en videojuegos es la creación de ‘cheats’ o trampas, con fines de estudio o modificación de experiencia, pero no necesariamente éticos en entornos competitivos.
Para iniciar en la ingeniería inversa es vital tener y/o entender los conceptos fundamentales con respecto a la programación en cualquier lenguaje compilado. En este blog no se planea enseñar a programar desde cero, puesto que se espera que tú tengas los conocimientos básicos.