Los ingenieros a veces necesitan pensar al revés para analizar un producto. Por ejemplo, un ingeniero mecánico puede sacar conclusiones sobre la producción de un producto en función de su diseño y propiedades físicas. Incluso pueden ser capaces de producir el mismo producto si tienen un conocimiento profundo del mismo.
También puede comparar la ingeniería inversa con las pruebas de ecuaciones matemáticas. Entonces, ¿cómo se usa la ingeniería inversa?
¿Qué es la ingeniería inversa?
La ingeniería inversa es el proceso de analizar un sistema con el fin de reproducirlo o mejorarlo. Si observa las áreas de trabajo de la ingeniería inversa, puede ver que puede usarla para muchos propósitos diferentes. Si lo mira desde una perspectiva de ciberseguridad, es posible realizar las siguientes operaciones con métodos de ingeniería inversa:
- Análisis de fuente de software de fuente no abierta
- Análisis de vulnerabilidad
- Análisis de malware
- Grietas y Parches
Puedes ver la ingeniería inversa utilizada incluso en los juegos de computadora hoy en día. Por ejemplo, los desarrolladores suelen crear modificaciones de software utilizando métodos de ingeniería inversa.
En el campo de la ingeniería inversa, existen dos métodos de análisis diferentes: estático y dinámico. Realiza un análisis estático cuando analiza un programa sin ejecutarlo realmente. Un método de análisis dinámico, por otro lado, requiere que ejecute el programa para observar su comportamiento y los datos que utiliza.
Pero antes de llevar a cabo un análisis de ingeniería inversa, hay algunos términos importantes que debe conocer cómo funciona la arquitectura de la computadora.
Partes principales de la arquitectura informática
La ingeniería inversa es prácticamente imposible a menos que comprenda la arquitectura de la computadora. Necesitas estudiar las cuatro partes principales:
- Aporte: Un conjunto de métodos para ingresar datos.
- UPC: La CPU procesa los datos entrantes y los transmite a sus propietarios. Es la unidad central de procesamiento.
- Memoria: El espacio que contiene temporalmente los datos durante el procesamiento.
- Producción: El resultado que ve el usuario final.
Puede tener en cuenta todos estos problemas principales con un ejemplo, como cuando presiona la letra A en su teclado. Cuando lo presiona, ocurre un evento de entrada. Después de esta etapa, la CPU procesa los datos y utiliza un pequeño espacio en la memoria para almacenarlos. Finalmente, verás la letra A en tu pantalla, finalizando el proceso con salida.
Sumérgete en las profundidades de la CPU
Si realmente quieres convertirte en un experto en ingeniería inversa y profundizar en este tema, debes tener un conocimiento detallado del hardware, los lenguajes de bajo nivel y especialmente la CPU. Los temas clave que necesitará saber sobre la CPU son:
- Unidad de control: Este es responsable del procesamiento de datos en la CPU y su transferencia a los campos correspondientes. Puede pensar en esta unidad como un mecanismo de control de enrutamiento.
- ALU: Esto significa Unidad Lógica Aritmética. Aquí es donde tienen lugar algunas operaciones aritméticas y lógicas. Si profundiza en las matemáticas, verá que las cuatro operaciones básicas son esencialmente variaciones de la suma. Entonces, la ALU se basa en la agregación. Por ejemplo, restar dos de tres es lo mismo que sumar menos dos a tres.
- Registros: Estas son las áreas dentro de la CPU que contienen los datos procesados. Hay diferentes tipos de registros, al igual que hay diferentes tipos de variables en un lenguaje de programación. Un registro es responsable de mantener el tipo y los atributos de los datos que se le asignan.
- Señales: Si desea que la CPU realice muchas operaciones diferentes al mismo tiempo, es necesario algún método para organizarlas. Los elementos que hacen esto se llaman señales. Cada transacción actúa de acuerdo con señales que aseguran que no interfiere con otro proceso.
- Autobús: La ruta utilizada por los datos para moverse de una unidad a otra. Tenga en cuenta cómo el nombre sugiere transporte.
Conceptos que escuchará a menudo en ingeniería inversa
Comprender cómo la CPU procesa los datos y los almacena en la memoria, junto con el concepto de registros, puede ser muy útil cuando se realiza ingeniería inversa. En particular, puede usar el siguiente diagrama para comprender mejor el concepto de memoria:
Finalmente, para el análisis de ingeniería inversa, necesita conocer algunos conceptos básicos sobre registros. Son uno de los temas en los que más te centrarás. Aquí hay algunas explicaciones sobre datos, punteros y registros de índice que le serán útiles de la manera más concisa:
- 1. EAX: Significa Registro Acumulador. Por lo general, guarda datos que entran en la categoría de operaciones aritméticas aquí.
- 2. EBX: Significa Registro base. Desempeña un papel en el direccionamiento indirecto.
- 3. EDX: Significa Registro de datos. EDX ayuda a otros registros.
- 4. EIP: Significa Puntero de instrucción. Contiene la dirección del dominio a ejecutar.
- 5. ESP: Contiene la dirección base.
- 6. ESI: contiene la información del índice de origen.
- 7. EDI: Mantiene la información del índice de destino.
Debe investigar todos estos por separado para comprender sus matices. Pero si observa los conceptos básicos y trata de comprender la lógica comercial, sin importar con qué arquitectura de procesador esté trabajando, el análisis de código para la ingeniería inversa será bastante fácil.
La ingeniería inversa a menudo comienza con el código de máquina. Es posible que comprenda muchos de los términos anteriores si está familiarizado con el ensamblaje o tiene un dominio de Arquitecturas de procesador de 32 o 64 bits. Si desea aprender a ensamblar desde cero, será extremadamente útil en ingeniería inversa.
¿Qué vas a hacer con todo esto?
Si tiene un buen conocimiento de ingeniería inversa, puede realizar análisis de código sin importar con qué sistema operativo o arquitectura de procesador esté trabajando. Por ejemplo, es posible encontrar versiones crackeadas de muchos programas o juegos de computadora. Este es un método completamente ilegal.
Sin embargo, si va a ser un profesional de ciberseguridad ético, deberá usar ingeniería inversa para comprender por qué estos programas descifrados están siendo descifrados. Si quieres avanzar en ingeniería inversa o estás empezando, sería una buena opción si intentas aprender sobre la relación entre el hardware y el código máquina.