Saltar al contenido

Comprender los conceptos de ingeniería inversa.

cpu fundamentals for reverse engineering Comprender los conceptos de ingeniería inversa.

Los ingenieros a veces tienen que pensar al revés para analizar un producto. Por ejemplo, un ingeniero mecánico puede sacar conclusiones sobre la producción de un producto basándose en 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 la demostración 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 objetivo de reproducirlo o mejorarlo. Si observa las áreas de trabajo de la ingeniería inversa, verá que puede usarla para muchos propósitos diferentes. Mirándolo desde una perspectiva de ciberseguridad, es posible realizar las siguientes operaciones utilizando métodos de ingeniería inversa:

Puede ver que la ingeniería inversa se usa incluso en los juegos de computadora de hoy. Por ejemplo, los desarrolladores suelen realizar modificaciones de software utilizando métodos de ingeniería inversa.

En el campo de la ingeniería inversa, existen dos métodos diferentes de análisis: 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 el comportamiento y los datos que utiliza.

Pero antes de hacer cualquier análisis de ingeniería inversa, hay algunos términos importantes que debe saber sobre cómo funciona la arquitectura de la computadora.

Partes principales de la arquitectura de la computadora.

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 de entrada de datos.
  • Procesador: La CPU procesa los datos entrantes y los pasa a los propietarios. Es la unidad central de procesamiento.
  • Memoria: El espacio que contiene temporalmente los datos durante el procesamiento.
  • Salida: El resultado que ve el usuario final.

Puede tener en cuenta todas estas cosas principales con un ejemplo como cuando presiona la letra A en su teclado. Cuando se 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á la letra A en su pantalla y finalizará el proceso con la salida.

Sumérgete en las profundidades de la CPU

Un primer plano de una CPU en una placa de circuito impreso

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, lo más importante, la CPU. Los temas más importantes que debe saber sobre la CPU son:

  1. Unidad de control: Este es responsable de procesar los datos en la CPU y transferirlos a los campos correspondientes. Puede pensar en este dispositivo como un controlador de enrutamiento.
  2. ALU: Esto significa Unidad Lógica Aritmética. Aquí tienen lugar algunas operaciones aritméticas y lógicas. Si profundiza en las matemáticas, encontrará 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.
  3. 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 realizar un seguimiento del tipo y las características de los datos que se le asignan.
  4. Señales: Si desea que la CPU realice muchas operaciones diferentes al mismo tiempo, se necesita algún método para organizarlas. Los elementos que hacen esto se llaman señales. Cada transacción actúa sobre señales que aseguran que no interfiere con otro proceso.
  5. Autobús: La ruta utilizada por los datos para pasar de una entidad 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 y almacena datos en la memoria, además del concepto de registros, puede ser muy útil en ingeniería inversa. En particular, puede usar el siguiente diagrama para comprender mejor el concepto de memoria:

Un diagrama que muestra diferentes partes de la memoria incluye Stack y Heap.

Finalmente, el análisis de ingeniería inversa requiere que conozca algunos conceptos básicos sobre registros. Son uno de los temas en los que más te centrarás. Aquí tienes algunas explicaciones de datos, referencias y registros índice que te serán de utilidad de la forma más concisa posible:

  • 1. EAX: Significa Registro Acumulador. Por lo general, almacena datos aquí que pertenecen a la categoría de operaciones aritméticas.
  • 2.EBX: Significa Registro Básico. Desempeña un papel en el direccionamiento indirecto.
  • 3.EDX: Significa Registro de datos. EDX ayuda a otros registros.
  • 4. PIE: Significa Guía de instrucciones. Contiene la dirección del dominio a ejecutar.
  • 5. ESP: Contiene la dirección base.
  • 6.ESI: contiene la información del índice de recursos.
  • 7.EDI: conserva la información del índice de destino.

Debe examinar cada uno de estos individualmente 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 las arquitecturas de procesadores ensamblados o maestros de 32 o 64 bits. Si desea aprender a ensamblar desde cero, la ingeniería inversa es extremadamente útil.

¿Qué vas a hacer con esto?

Si tiene una buena comprensión de la ingeniería inversa, puede realizar análisis de código independientemente del sistema operativo o la arquitectura del procesador con el que esté trabajando. Por ejemplo, es posible encontrar versiones crackeadas de muchos programas o juegos de ordenador. Este es un método completamente ilegal.

Sin embargo, si desea convertirse en un profesional de la ciberseguridad ético, debe usar ingeniería inversa para comprender por qué estos programas pirateados se descifran. Si desea pasar a la ingeniería inversa o recién está comenzando, tratar de aprender más sobre la relación entre el hardware y el código de máquina sería una buena opción.