La ingeniería inversa es el proceso de desarmar algo, analizar sus características y componentes y volver a armarlo para comprender completamente el dispositivo. En las computadoras, las herramientas de ingeniería inversa se pueden usar para descomponer cosas como software y bases de datos, o se pueden usar con fines científicos, como simplificar y descomponer el genoma humano para una mejor comprensión y contribución científica. Aunque las herramientas de ingeniería inversa han sido criticadas por su legalidad, existen varias herramientas para analizar y comprender muchos tipos diferentes de productos, en particular el software.
Algunos programas están disponibles como herramientas de ingeniería inversa de código abierto y pueden descargarse fácilmente de Internet. Un tipo de material de código abierto incluye las herramientas de ingeniería inversa de Java, que permiten la desofuscación de las clases de Java compiladas. Acceden al código fuente, creando un desofuscador que es cuasi código. Las herramientas de ingeniería inversa están diseñadas para funcionar asignando sustantivos aleatorios a clases ofuscadas en Java, y asignarán verbos aleatorios del idioma inglés a métodos de clase ofuscados en Java. Obtener una herramienta como esta requiere una simple descarga e instalación del software en una computadora.
Otras herramientas de código abierto que se pueden descargar e instalar fácilmente desde Internet incluyen analizadores para protocolos de red. Estos tipos de software de ingeniería capturan paquetes de datos en una red para analizarlos posteriormente. Se utilizan para comprender las operaciones de los protocolos de red en multimedia patentada. El software se puede descargar de forma gratuita y se mejora y mejora constantemente.
Otra variedad de software para ingeniería inversa permite la construcción de herramientas para análisis dinámico. Este tipo de herramientas de ingeniería inversa se utilizan en la detección de errores de subprocesamiento y en la gestión de la memoria. El software incluye muchos tipos diferentes de herramientas, incluido un detector de errores de memoria, un generador de perfiles de predicción para cachés y ramas, y un generador de gráficos de llamadas, entre muchos otros.
También existen herramientas de ingeniería inversa que se pueden ejecutar en ciertos sistemas operativos (SO) como depuradores y desensambladores. Este tipo de software puede ser de código abierto o adquirirse a través de Internet. Una de estas herramientas viene con instrucciones en PDF y tutoriales sobre cómo usarla con diferentes sistemas operativos, lo que permite al usuario comprender mejor la funcionalidad del dispositivo y el sistema operativo. Sin embargo, ha sido objeto de críticas con ciertos dispositivos móviles y teléfonos inteligentes, y ya no está disponible para su uso.