¿Quién no ha desmontado nunca algún aparato para intentar conocer cómo funciona? Pues sin saberlo, has aplicado este concepto relativamente nuevo: La tecnología inversa. Gracias a ella, obtenemos conocimiento y podemos mejorar procesos, objetos o sistemas existentes. ¿Quieres saber en qué consiste?
Qué es la ingeniería inversa y para qué sirve
La ingeniería inversa consiste en descubrir cómo está hecho un objeto, dispositivo, sistema o herramienta analizando su funcionamiento y los componentes de los que está hecho para crear un objeto similar o mejorar el existente que realice la misma tarea o una parecida.
Los orígenes de este proceso se remontan a la Segunda Guerra Mundial, donde a través de la captura de maquinaria de guerra, se estudiaba toda la tecnología con el fin de crear o mejorar la industria armamentística para conseguir ventajas estratégicas y superar la tecnología del adversario.
A partir de entonces, saber cómo hacer ingeniería inversa ha facilitado numerosos avances tecnológicos utilizándose en ámbitos productivos muy diferentes. Hoy en día, es muy utilizado a la hora de mejorar el software y el hardware de numerosos objetos y aplicaciones informáticas.
Ventajas de su aplicación
Conocer qué es la tecnología inversa facilita la investigación científica y el desarrollo tecnológico ofreciendo muchas ventajas en el ámbito empresarial y científico. Estas son algunas de ellas:
- Ayudan a diagnosticar fallos: mediante el razonamiento abductivo es posible identificar las causas de defectos o fallos, permitiendo la mejora del producto original.
- Mejora e innovación: estudiando un objeto o dispositivo pueden solucionarse y mejorar los procesos de fabricación y diseño.
- Previene accidentes: con la información obtenida pueden identificarse los fallos del producto original para prevenir accidentes y las consecuencias derivadas de ellos.
- Mejora en la competencia: analizando productos de la competencia pueden mejorarse para conseguir una ventaja estratégica y aumentan los volúmenes de ventas.
- Dirimir responsabilidades: mediante la ingeniería inversa pueden esclarecerse las causas de un accidente y aclarar las responsabilidades legales.
Herramientas útiles para la ingeniería inversa
Aunque las aplicaciones de la ingeniería inversa son numerosas, es en la rama de la informática donde más se emplea en la actualidad. Los programas informáticos se inician escribiendo un código fuente que compila un lenguaje de programación para crear una aplicación ejecutable. Para editarlos, será necesario conocer ese código fuente y, como normalmente no se dispone de él, será necesario realizar una compilación inversa que transforme el programa en el código de programación.
Para ello será necesario emplear algunas de estas herramientas de ingeniería inversa:
- Depuradores: son programas que se utilizan para controlar a otros. Analizan un código paso a paso para permitir una detección de fallos. Los más empleados son Olly Dbg, WinDBG, Visual DuxDebugger, GNU Debugger (gdb) y SoftICE.
- Desensambladores: son lo contrario de los depuradores; muestran el código de la máquina en un formato más amigable al ojo humano. En función del sistema operativo pueden emplearse:
- Windows: IDA Pro, PE Explorer, W32DASM, IDA 6.6, IDA Pro Freeware 5.0.
- Linux: Bastard Disassembler, Ciasdis, Objdump, GDB, LDasm.
- Mac Os: GDB, Machonist, Otool, Ndisasm.
- Compiladores inversos o decompiladores: recrean un código fuente a través de un código binario ejecutable. Los más usados son: DCC Decompiler, Boomerang Decompiler Project y Reverse Engineering Compiler (REC).
Gracias a la ingeniería inversa es posible mejorar objetos, dispositivos o sistemas para que sean mucho más eficaces mejorando sus características y solucionando los posibles defectos que puedan tener. Permite el desarrollo tecnológico incorporando mejoras y nuevas aplicaciones.